将二进制树转换为已排序的数组

时间:2011-04-23 13:47:33

标签: java binary-tree

在我之前的question之后,我想现在将二叉树值放在一个排序数组中。

所以,首先我使用 numOfNodeswn 函数来计算树中节点的总和,

我根据这个函数的结果创建了一个数组,我开始认为不是找到树的最小值而不是那么容易后继者 函数,我可以简单地利用这种树的效用并制作一种Inorder过程,在此期间我可以将正确的值放入我的数组中。

我的主要问题是控制变量 i - 这是根据它的索引,我将确切地知道放置正确值的位置。

(标题是树的头部)

这是我到目前为止写的:

public double[] toDoubleArray() {
    double[] arr = new double[numOfNodeswn(header)];
    int i=0;
    return putvalues(arr, i, header);
    }



private double[] putvalues(double[] arr, int i, RBNode t) {

    if (t!=null){
        putvalues (arr, i, t.left);
        arr[i]=t.value;
        i++;
        putvalues (arr, i, t.right);    
}
    return arr;

}

2 个答案:

答案 0 :(得分:1)

我认为你需要对二叉树进行深度优先迭代。将每个条目加载到树中并随时增加索引。结果应该是一个排序数组。

答案 1 :(得分:1)

对树进行有序遍历是正确的。也许不是返回arr而是返回一个整数,对应于数组中的第一个开放点。这似乎是一项家庭作业,所以我不想放弃太多。