【问题标题】:What is the Big-O complexity of a general tree?一般树的 Big-O 复杂度是多少?
【发布时间】:2017-07-27 08:48:24
【问题描述】:

我所说的通用树是指具有多个子节点的不平衡树(不限于每个分支的 2 个子节点,例如二叉树)。删除节点、插入节点、查找节点的 Big-O 复杂度是多少

【问题讨论】:

    标签: data-structures


    【解决方案1】:

    在平衡 BST 中搜索的平均时间复杂度为 O(log(n))。在不平衡二叉树中搜索的最坏情况复杂度为 O(n)。

    【讨论】:

    • 更一般地说,OP 在 d-ary 树中询问的所有三个操作的平均时间复杂度是O(log-base-d(n))。诚然,我们在渐近分析中忽略了常数(如对数的底),所以 O(log(n)) 实际上是正确的。
    • OP 并不是专门询问二叉树,对吧?
    【解决方案2】:

    如果您说的是一棵对其数据没有任何特殊处理的常规 k-ary 树,那么假设存在 n 节点,则要在树中找到任何一个节点都需要 O(n) 时间。

    插入节点将是O(1),因为您可以将其存储在任何您想要的位置,而删除节点将是O(n),因为您必须查看每个节点(最坏的情况)才能找到要删除的节点,而且由于数据没有顺序,因此您不必对其余节点执行任何操作。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 2012-07-10
      • 1970-01-01
      • 2014-01-04
      • 2017-02-01
      • 2023-03-27
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多