时间复杂性问题

时间:2017-11-19 04:14:47

标签: algorithm time-complexity

对于平衡和非平衡BST,将节点插入二叉树的时间复杂度是否相同?

3 个答案:

答案 0 :(得分:0)

对于平衡树,insert需要O(log(n)),这是从根到叶子的节点数。

如果树是不平衡的,它可能是一条长链,这意味着插入可能是n步的最坏情况,这意味着O(n)

答案 1 :(得分:0)

不,如果插入顺序遵循某些特定模式,则时间复杂度可能不同。考虑到所显示的努力程度,我不打算完全回答它,但请考虑以下因素:

在BST中插入一千个元素,从最小到最大。插入最后一个时需要进行多少次比较?

答案 2 :(得分:0)

怎么可能一样?

不一样

例如

像这样的BST

  5
  /\
 3  7
/\  /\
2  4 6 8

如果你想插入一个节点(1),你将遍历3个节点(5-3-2)。

现在针对不平衡的情况:-(最糟糕的情况可能是)

       8
      /
     7
    /
  ...
  /
 2

这里要插入1,您需要遍历7个节点。

为了避免这种偏斜,引入了平衡搜索树。您可以查看BST的缺点,然后您可以查看AVL树或RB树。你会得到它的不同之处。

对于高度平衡的BST,搜索的复杂度为O(logn)。但对于最坏情况下的不平衡BST,可能需要O(n)