我知道如果平衡,BST高度为O(log(n)),意味着搜索是O(log(n)),但是将不平衡树变成平衡树会增加插入的运行时间/删除,因为你必须在每次插入/删除后重新平衡它。
是否有另一种修改BST的方法,以便在O(log(n))时间内找到Kth最小项,而不影响其他函数的运行时间?
答案 0 :(得分:2)
但是将不平衡的树变成平衡的树会增加插入/删除的运行时间,因为在每次插入/删除后你必须重新平衡它。
不正确,自平衡二叉树也有O(log n)
插入和删除。基本原因是,虽然您确实需要进行重新平衡,但重新平衡本身每次操作总共需要O(log n)
。
查看AVL trees,了解如何在不影响操作复杂性的情况下重新平衡。