Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 对bst中的树后继者的k个连续调用_Algorithm_Binary Search Tree_Proof - Fatal编程技术网

Algorithm 对bst中的树后继者的k个连续调用

Algorithm 对bst中的树后继者的k个连续调用,algorithm,binary-search-tree,proof,Algorithm,Binary Search Tree,Proof,证明对树后继者的K次连续调用需要O(K+h)时间。由于每个节点的访问量是atmost的两倍,因此访问的节点数的最大界限必须为2k。时间复杂度必须是O(k)。我不明白O(h)的因素在哪里。这是因为被访问的节点不是后续节点。我不能确切地解释我自己,因子O(h)是如何参与整个过程的 PS:我知道这个问题已经存在,但我无法理解解决方案 Plus在O(k+h)符号中是书写O(MAX(k,h))的另一种形式 一次找到继任者可能需要花费O(h)时间。要了解为什么这是真的,考虑一下当你正在寻找根的左子树最右边节

证明对树后继者的K次连续调用需要O(K+h)时间。由于每个节点的访问量是atmost的两倍,因此访问的节点数的最大界限必须为2k。时间复杂度必须是O(k)。我不明白O(h)的因素在哪里。这是因为被访问的节点不是后续节点。我不能确切地解释我自己,因子O(h)是如何参与整个过程的

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

Plus在
O(k+h)
符号中是书写
O(MAX(k,h))的另一种形式

一次找到继任者可能需要花费
O(h)
时间。要了解为什么这是真的,考虑一下当你正在寻找根的左子树最右边节点的继承者的情况:它的继承者位于右子树的底部,所以你必须两次遍历树的高度。这就是为什么需要在计算中包括
h
:如果
k
h
小,那么
h
将主导算法的计时


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

到现有问题的链接在哪里?通常情况下,你应该通过评论或与海报聊天来澄清答案,而不是发布新问题。你的意思是,这个问题已经问了3年了?我承认最后第二点不清楚,第四点需要详细阐述。由于回答者在4小时前在线,要求澄清应该不是问题。不提供链接的问题是我们不知道你已经知道了什么,所以我们可能会努力写一个与那里的答案非常相似的答案,你也不会理解。我们可以澄清你不理解的部分。@user2179293,你可能想看看我在这里的答案:为了显示树的遍历高度是平均分布的,我是否需要显示每个边的最大访问次数是恒定的。如果是,那么如何显示?@user2179293你可以显示在完整的BST遍历过程中,每个节点最多访问三次。当节点是叶子时,它只被访问一次。当节点有一个子节点时,它会被访问两次——一次在向下访问,一次在向上访问。当节点同时具有两个子节点时,在向下的过程中访问一次,在向上的过程中访问两次-每个子分支访问一次。由于每个节点的访问次数都有一个固定的限制,所以总的时间是线性的。但这是线性的,与节点的数量有关,而不是与时间有关height@user2179293请重读我回答的第一句话:
O(k+h)
并不意味着高度的横向分布是均匀的。所有这一切都意味着它可能被
k
h
支配,但在其中任何一个方面都是线性的。你分别证明每一点(即“线性于
k
”、“线性于
h
”),然后写
O(MAX(k,h))
,最后替换为等价的
O(k+h)
,仅此而已。@dasblinkenlight根树左子树最右边节点的后继节点是根本身。。。正确的?