Algorithm 证明/解释算法的时间复杂度为O(h+;k)

Algorithm 证明/解释算法的时间复杂度为O(h+;k),algorithm,tree,time-complexity,pseudocode,asymptotic-complexity,Algorithm,Tree,Time Complexity,Pseudocode,Asymptotic Complexity,证明/解释给定算法的时间复杂度为O(h+k)。其中h是树的高度,k是x到y(包括x和y)范围内的节点数 我知道如果k=0(范围内没有项目),那么算法只需遍历树的高度,即O(h)。我还知道一个节点是否在它递归到两个子节点的范围内,而不是只递归到其中一个子节点。但这似乎有双重效果,所以我对如何证明/解释这一点感到困惑 INRANGE-TREE-WALK (v, x, y) if v != NIL if v.key < x INRANGE-TREE-WALK(v.righ

证明/解释给定算法的时间复杂度为O(h+k)。其中h是树的高度,k是x到y(包括x和y)范围内的节点数

我知道如果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)
INRANGE-TREE-WALK(v,x,y)
如果v!=无
如果v.key
我假设该树是一个二进制搜索树

您可以查看调用函数的当前节点的深度,然后注意,对于任何给定的深度,对于
v.key
,访问的具有该深度的节点v不会超过一个

尽管这种情况可能在不同深度发生多次,但有人声称,在树的同一深度,这种情况不会发生多次

假设这一说法是错误的,在树中的一个特定深度d,算法访问两个节点a和b,并发现
a.key
b.key
。让我们也选择a和b,这样
a.key y


多少次将
x我假设树是一个二叉搜索树

您可以查看调用函数的当前节点的深度,然后注意,对于任何给定的深度,对于
v.key
,访问的具有该深度的节点v不会超过一个

尽管这种情况可能在不同深度发生多次,但有人声称,在树的同一深度,这种情况不会发生多次

假设这一说法是错误的,在树中的一个特定深度d,算法访问两个节点a和b,并发现
a.key
b.key
。让我们也选择a和b,这样
a.key y


多少次将
x一些人类可读的算法解释是高度赞赏的。此外,您正在遍历的树似乎是一个二叉搜索树,但它没有在任何地方列出。非常感谢对该算法的一些可读性解释。此外,您正在遍历的树似乎是一个二叉搜索树,但它没有在任何地方列出。