k在bst中连续调用树继承者

时间:2013-09-13 15:00:47

标签: algorithm binary-search-tree proof

证明对树继任者的K连续调用需要O(k + h)时间。由于每个节点最多访问两次,所访问节点数的最大界限必须为2k。时间复杂度必须是O(k)。我不知道O(h)即将来临的因素。是因为访问过但不是后继的节点。我不能完全解释自己O(h)因素如何参与整个过程

PS:我知道这个问题已经存在,但我无法理解解决方案。

1 个答案:

答案 0 :(得分:3)

另外,O(k+h)符号是另一种写作O(MAX(k, h))的形式。

找到一个继任者可能需要O(h)时间。要了解为什么这是真的,请考虑一种情况,当您在寻找根的左子树的最右边节点的后继时:它的后继位于右子树的底部,因此您必须遍历树的高度两次。这就是您需要在计算中加入h的原因:如果kh相比较小,那么h将主导算法的时间安排。

练习的目的是证明连续调用后继k次的时间是而不是 O(k*h),正如人们在观察到之后可以想象的那样单次通话最多可能需要O(h)。您可以通过显示遍历树高度的成本在k调用中分配来证明它,就像您注意到每个节点最多访问两次一样。