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