目前,我的二进制搜索树主代码如下所示:
public void add(int value) {
overallRoot = add(overallRoot, value);
}
private IntTreeNode add(IntTreeNode root, int value) {
if(root == null){
root = new IntTreeNode(value);
} else if (value <= root.data){
root.left = add(root.left, value);
} else {
root.right = add(root.right, value);
}
return root;
}
public void print() {
printInorder(overallRoot);
System.out.println();
}
private void printInorder(IntTreeNode root) {
if(root != null) {
printInorder(root.left);
System.out.print(root.data + " ");
printInorder(root.right);
}
}
按以下顺序插入值42,9,18,55,7,108,4,70,203,15, 我可以借助打印方式方法打印出如下图所示的树。
203
108
70
55
42
18
15
9
7
4
现在,当我调用tree.print(),应该在inorder遍历中打印时,它打印出4,7,9,15,18,42,55,70,108,203 但是当我手工进行顺序遍历时,我得到了4,7,15,9,18,42,55,70,108,203
我非常确定用手进行inorder遍历产生了正确的值 但为什么程序打印出不同的值?
答案 0 :(得分:0)
你的tree.print()方法正确处理了indorder。打印方式方法的结果是不正确的。您确定按照给我们的顺序插入了数字吗?如果是这样,结果应该是
-18 -9 -42 -7 -15 -55
-4 -108 -70 -203
因此输出应为4,7,9,15,18,42,55,70,108,203