在我之前的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;
}
答案 0 :(得分:1)
我认为你需要对二叉树进行深度优先迭代。将每个条目加载到树中并随时增加索引。结果应该是一个排序数组。
答案 1 :(得分:1)
对树进行有序遍历是正确的。也许不是返回arr
而是返回一个整数,对应于数组中的第一个开放点。这似乎是一项家庭作业,所以我不想放弃太多。