我想从第一个数组中插入键并将它们排序到第二个数组中的二叉树中。我知道我的插入方法存在问题,但我无法弄清楚。任何帮助将不胜感激使用数组的二叉树
import java.util.Arrays;
public class BSTreeArray {
static int startValues[]={50, 25, 75, 10, 15, 5, 53, 29, 79, 78, 111, 33};
int [] aTree;
public BSTreeArray(){
for(int i=0; i<startValues.length;i++){
insert(startValues[i]);
}
System.out.println("Pre-Order:");
preOrder(aTree[0], "");
}
public void insert(int key){
aTree=new int [100];
if(aTree[0]==0){
aTree[0]=key;
}
boolean add = false;
int curIdx=0;
while(!add){
if(key<aTree[curIdx]){
//go left
if (aTree[curIdx*2+1]==0){
aTree[curIdx*2+1]=key;
add = true;
}else{
curIdx=curIdx*2+1;
}
}else{
//go right
if(aTree[curIdx*2+2]==0){
aTree[curIdx*2+2]= key;
add=true;
}else{
curIdx=curIdx*2+2;
}
}
}
}
public void preOrder(int idx, String i){
if(idx>aTree.length){
return;
}else{
System.out.println(i+aTree[idx]);
preOrder(((2*idx)+1), i+".");
preOrder(((2*idx)+2), i+".");
}
}
public static void main (String []args){
BSTreeArray a=new BSTreeArray();
}
}
电流输出:
Pre-Order:
0
.0
.0
所需的输出:
50
....25
........10
............5
............15
........29
............33
....75
........53
........79
............78
............111
什么问题?输出是否错误?它不会编译?是否有例外? – Radiodef
@Radiodef插入方法不起作用。当数组打印出来时,数据是完全错误的 – user3277779
发布实际输出以及如果输出正确,输出应该是多少。 – Radiodef