树遍历 - 有序位置

时间:2015-05-14 10:28:12

标签: java algorithm tree position traversal

我试图在树中找到kth节点的值,使用递归顺序遍历。

下面的代码是通过递归完成的,但我的实现太慢了。

有人可以给我一个提示如何加快速度吗? (reihepos是类变量,它们都从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);
            }
        }

1 个答案:

答案 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;
}