这是什么BST方法,输出是什么?

时间:2014-09-17 07:52:07

标签: binary-search-tree

我试图更好地理解BST并遇到了这个问题。也许它已经晚了,我的大脑没有运作,但我似乎无法弄明白。

方法调用x.someMethod(9)的输出是什么? (x是下面描述的BinTreeNode。)

public int someMethod(int k) {

  if (k > size() || k < 1)
    return -1;

  int x = 0;
  if (left != null) 
    x = left.size();

  if (k <= x)
    return left.someMethod(k);
  else if (k - x == 1)
    return data;
  else
    return right.someMethod(k-x-1);

}
                       x→10
                      /    \
                    5       15
                  /   \        \    
                2     7          20
              /      /  \       /  \
            1      6     9     18  35

1 个答案:

答案 0 :(得分:1)

someMethod(k)输出存储在BST中的第k个最小数的值。

终止是直截了当的。 代码根据左子树和k中的节点数递归地选择左子树或右子。

在上述情况下,答案是20。