2
目前,我的二叉搜索樹主代碼如下所示:序遍歷混亂
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(),應在序遍歷打印,其打印出4,7,9,15,18,42,55,70,108,203 但是當我做手動遍歷,我得到4,7,15,9,18,42,55,70,108,203
我敢肯定,手動進行inorder遍歷產生了正確的值 但爲什麼程序打印出不同的價值?
您可以在左節點中輸入所有內容,然後輸入數據,然後在右節點中輸入所有內容。如果你有一個正確構造的二叉樹,這不能做任何事情,只能按升序打印所有的數據值。也就是說,你正在用手不正確地做。 – Phylogenesis
謝謝,我剛剛意識到我15分支左邊的是18而不是右邊的分支7 ;;; – jose
是的,它只能分支到'9'的右邊或'18'的左邊,否則樹本身就會不正確。 – Phylogenesis