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

Data structures 将节点插入二叉搜索树的最坏时间复杂度是多少?,data-structures,time-complexity,binary-tree,Data Structures,Time Complexity,Binary Tree,将节点插入二叉搜索树的最坏时间复杂度是多少?O(n)其中n是节点数。例如,如果您以有序方式插入所有键,如果您有一个“纯”二叉搜索树不进行任何平衡,那么插入元素的最坏运行时是Θ(n)。如果您有一个退化的二叉搜索树(其中每个节点正好有一个子节点),并且最终插入的元素最终作为最深节点的子节点,则会发生这种情况。例如,如果您尝试通过插入数字1、2、3、…、n来构建BST,在每一步插入剩余数字中最小或最大的数字,您将触发这种情况 如果您使用的是自平衡二叉搜索树,例如AVL树或红/黑树,最坏情况下的运行时间

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

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


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

您认为如何?O(n)如果您必须遍历整棵树。是的,在这种情况下,二叉树并不比单链表更好。有自平衡二叉树,例如or.Yes@user3386109,但在没有澄清的情况下,我们假设没有平衡策略。如果没有澄清,您应该要求澄清,或者像templatetypedef那样给出一个全面的答案。我认为@user3386109是有争议的。许多文献使用形容词“平衡”来进行区分。