我试图在树中找到kth
节点的值,使用递归顺序遍历。
下面的代码是通过递归完成的,但我的实现太慢了。
有人可以给我一个提示如何加快速度吗? (reihe
和pos
是类变量,它们都从0开始,我将最终结果保存在pos
中)。
这是我到目前为止所做的,任何帮助都会非常感激:
void valueAtPosition(int k) {
if(this.left!=null){
left.valueAtPosition(k);
}
if(reihe++==k){
pos=this.elem;
}
else if(this.right!=null){
right.valueAtPosition(k);
}
}
答案 0 :(得分:2)
删除reihe
的需要(我假设它不是英语,因为它对我来说没有意义作为变量名)。我已经将变量k作为返回值传递。当它达到0时,我返回当前值并停止搜索。
int valueAtPosition(int k) {
if(this.left!=null k >= 0){
k = left.valueAtPosition(k);
}
if(k == 0){
pos=this.elem;
}
k--;
if(this.right!=null && k > 0){
k = right.valueAtPosition();
}
return k;
}