我试图更好地理解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
答案 0 :(得分:1)
someMethod(k)输出存储在BST中的第k个最小数的值。
终止是直截了当的。 代码根据左子树和k中的节点数递归地选择左子树或右子。
在上述情况下,答案是20。