二进制搜索树中的删除

时间:2011-03-28 15:04:52

标签: algorithm binary-tree

为什么在BST中删除O(log(n))操作。据我了解,它涉及释放节点并将父节点的引用指向NULL。不应该采取O(1)

4 个答案:

答案 0 :(得分:1)

问题是如何删除有两个孩子的节点 - 必须重新构建树,以便孩子找到合适的新父母。详细解释here。谷歌是你的朋友。

答案 1 :(得分:1)

如果你从树的根开始,那就是O(lg n ):那么你必须搜索要删除的元素,然后搜索它的有序后继。

答案 2 :(得分:0)

如果你想删除一个节点和所有孩子,那么这很简单,但如果你想保持排序顺序,你必须重建孩子。

答案 3 :(得分:0)

二叉搜索树中的删除是O(h),其中h是树的高度。

现在你还没有提到树是否平衡,不平衡树的最坏情况复杂性是O(n),即当它是退化树时。

如果b.s.t是其中一个平衡的(Avl,红黑等),那么最坏情况的复杂性将是O(lg n),因为几乎所有平衡的b.s.t的高度。是K *(lg n)。

例如,对于avl树k = 1和红黑树K = 2。