【问题标题】:What is the worst-case time complexity for inserting a node into a binary search tree?将节点插入二叉搜索树的最坏情况时间复杂度是多少?
【发布时间】:2016-12-06 23:38:57
【问题描述】:

将节点插入二叉搜索树的最坏情况时间复杂度是多少?

【问题讨论】:

  • 你怎么看? O(n) 如果你必须遍历整棵树。

标签: data-structures time-complexity binary-tree


【解决方案1】:

O(n) 其中n 是节点数。例如,如果您以有序的方式插入所有键,就会发生这种情况

【讨论】:

  • 是的,在这种情况下,二叉树的性能并不比单链表好。
  • 有自平衡二叉树,例如AVL treesred-black trees.
  • 是的@user3386109,但在没有澄清的情况下,假设没有平衡策略。
  • 在没有澄清的情况下,应该要求澄清,或者像templatetypedef那样给出全面的答案。
  • 我认为这是值得商榷的@user3386109。许多文献使用形容词“平衡”来区分。
【解决方案2】:

如果你有一个不做任何平衡的“纯”二叉搜索树,那么插入元素的最坏情况运行时间是 Θ(n)。如果您有一个退化的二叉搜索树(每个节点只有一个子节点)并且您最终插入的元素最终成为最深节点的子节点,则会发生这种情况。例如,如果您尝试通过插入数字 1、2、3、...、n 来构建 BST,并且在每个步骤中插入剩余数字中的最小或最大,您将触发这种情况.

如果您使用自平衡二叉搜索树,例如 AVL 树或红/黑树,最坏情况的运行时间是 Θ(log n),因为这些树保证树的高度永远不会超过Θ(log n) 并且插入的运行时间在最坏的情况下与树的高度成正比。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多