證明/解釋給定算法的時間複雜度爲O(h + k)。其中h是樹的高度,k是x和y(含)之間的節點數。證明/解釋算法的時間複雜度爲O(h + k)
我知道,如果k = 0(範圍內沒有項目),那麼它的算法只是遍歷樹的高度,因此O(h)。我也知道一個節點是否在它的兩個孩子的範圍內,而不是其中的一個。但是這似乎有倍增效果,所以我很困惑如何證明/解釋這個。
INRANGE-TREE-WALK (v, x, y)
if v != NIL
if v.key < x
INRANGE-TREE-WALK(v.right, x, y)
else if v.key 〈= y
print v.key
INRANGE-TREE-WALK (v.left, x, y)
INRANGE-TREE-WALK (v.right, x, y)
else
INRANGE-TREE-WALK(v.left, x, y)
該算法的一些人類可讀的解釋受到高度讚賞。此外,它似乎是你正在遍歷的樹是一個二叉搜索樹,但它沒有在任何地方概述。 – iehrlich