每个人的问题。
我必须遍历一棵二叉树,并以正确的顺序为每个节点填充一个数组,以便在打印数组的每个元素时都像树一样打印出来。我有正确的打印方法,并且有正确的方法来获取数组并创建二叉树。但是,我当前用于从二叉树填充数组的方法不是按照正确的顺序填充数组。
没有指定的遍历方法,但是我正在使用预排序,它必须是递归的并返回一个数组,并且由于我的二叉树是通用的,所以我使用的是ArrayList而不是数组。
我尝试用null填充ArrayList,以便可以将元素放置在指定的索引处,但是会出现越界错误。
这是我当前的代码:
public static <T> ArrayList<T> loadOverToArray(BinaryNode<T> root, int index){
int length = findDepth(root);
long size = powerOfTwo(length);
ArrayList<T> temp = new ArrayList<>();
/*for(int i = 0; i < size; i++){
temp.add(null);
}*/
if(root != null){
temp.add(root.getData());
}
if(root.getLeft() != null){
temp.addAll(loadOverToArray(root.getLeft(), leftChildIndex(index)));
}
if(root.getRight() != null){
temp.addAll(loadOverToArray(root.getRight(), rightChildIndex(index)));
}
return temp;
}
用于测试的树:
8
4
2
1
3
6
5
7
12
10
9
11
14
13
15
然后我的方法返回给我的树:
8
4
1
7
12
3
10
9
2
6
11
14
5
13
15
非常感谢!