树遍历 - 中序位置
Tree traversal - inorder position
我试图在树中找到 kth
节点的值,使用递归顺序遍历。
下面的代码是递归完成的,但我的实现速度太慢了。
有人可以给我提示如何让它更快吗? (reihe
和pos
是class变量,都是从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);
}
}
删除 reihe
的需要(我假设它不是英文的,因为它对我来说作为变量名毫无意义)。我已将变量 k 作为 return 值传递。当它到达0时,我return当前值并停止搜索。
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;
}
我试图在树中找到 kth
节点的值,使用递归顺序遍历。
下面的代码是递归完成的,但我的实现速度太慢了。
有人可以给我提示如何让它更快吗? (reihe
和pos
是class变量,都是从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);
}
}
删除 reihe
的需要(我假设它不是英文的,因为它对我来说作为变量名毫无意义)。我已将变量 k 作为 return 值传递。当它到达0时,我return当前值并停止搜索。
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;
}