【问题标题】:Time and space complexity of recursive random tree structure递归随机树结构的时间和空间复杂度
【发布时间】:2021-03-10 13:12:49
【问题描述】:

我试图找到一个很好的例子来理解递归映射随机树时的时间和空间复杂度(大 O 表示法)。

我找到了二叉搜索树的示例,但我不确定这种情况是否适用于我的情况。

假设我们有一棵节点树。这些节点中的每一个也可以有随机数量的子节点。

ParentNode[ChildNode1.1[ChildNode2.1,ChildNode2.2], ChildNode1.2[ChildNode2.3]]

我的任务包括将 ParentNode 复制到包含所有子节点的新 CopyNode 中。为此,我的功能是:

CopyNode = getChildNode(ParentNode)

Node getChildNode(Node node){
    Node newNode = node.copy();
    if (node.getChildren().empty()){
        return newNode
    }
    for (Node child: node.getChildren()){
        newNode.addChild(getChildNode(child))
    }
    return newNode;
}

如您所见,它是一个递归函数,迭代到树中的所有分支和节点。

我有两个问题。

  1. 函数的时间和空间复杂度是多少。我不确定它是否是 O(n),因为一些递归函数就是这样工作的。或 O(XeN) 指数。

  2. 可能是实现该功能的有效方法吗?

【问题讨论】:

    标签: algorithm recursion time-complexity big-o space-complexity


    【解决方案1】:

    node.copy() 每个源节点只调用一次。时间复杂度确实是O(N)N 是源树中的节点数)。

    空间复杂度与源树的深度成正比。最坏的情况又是O(N)

    不需要测试node.getChildren().empty() 的特殊情况。

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2021-04-03
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多