它的遍历:public class Tree {
public static void main(String[] args) {
int data;
DNTtree dtree = new DNTtree();
BufferedReader buf = new BufferedReader(
new InputStreamReader(System.in));
try {
System.out.print("请输入一个数值:");
data = Integer.parseInt(buf.readLine());
dtree.data[0] = data;
while (true) {
System.out.print("请输入一个数值:");
data = Integer.parseInt(buf.readLine());
if (data == 0)
break;
dtree.create(data);
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
dtree.display(0);
}
}
class DNTtree {
int maxSize = 16;
int[] data = new int[maxSize];
int[] left = new int[maxSize];
int[] right = new int[maxSize];
public DNTtree() {
for (int i = 0; i < maxSize; i++) {
data[i] = 0;
left[i] = -1;
right[i] = -1;
}
}
public void create(int data) {
int i;
int position = 0;
int level = 0;
for (i = 0; this.data[i] != 0; i++);
this.data[i] = data;
while (true) {
if (data > this.data[level]) {
if (right[level] != -1)
level = right[level];
else {
position = -1;
break;
}
} else {
if (left[level] != -1) {
level = left[level];
} else {
position = 1;
break;
}
}
}
if (position == 1)
left[level] = i;
else
right[level] = i;
}
public void display(int position) {
if (position != -1) {
System.out.print(" " + data[position] + " ");
display(left[position]);
display(right[position]);
}
}
} |