[英]Preorder transversal of a binary tree is printing out extra values I do not want
我在 Java 中實現了一個前序遍歷,它打印出二叉樹每個節點處的字符以及到達該節點的 0 和 1 表示的路徑。 “0”表示 go 沿左側路徑,“1”表示 go 沿右側向下。 但是,在打印某些節點之后,它將在打印不同節點的下一個字符之前打印額外的路徑號。 這是我的代碼
public static void printCodes(MsgTree root, String code)
{
if (root == null) {
return;
}
System.out.println(" " + root.payloadChar + " " + code);
printCodes(root.left, code + "0");
printCodes(root.right, code + "1");
}
結果應該看起來像
a 0
! 100
d 1010
c 1011
r 110
b 111
但它看起來像
a 0
1
10
! 100
101
d 1010
c 1011
11
r 110
b 111
我嘗試了很多不同的東西,但似乎沒有任何效果。 任何幫助深表感謝!
問題是在你的樹中(我從另一個問題中認識到)節點要么保存數據,要么保存子節點。 但不是兩者兼而有之。
查看所需的 output 的第二行:
! 100
這意味着,為了得到!
節點,程序必須 go 向右( 1
)然后向左兩次( 00
)。 所以它在到達的過程中訪問了其他幾個節點!
但沒有打印出來。
您應該只檢查payloadChar
是否為空,如果是,則不要打印任何內容。
順便說一句,雖然你沒有包括它,我很確定你的 output 在第一個上面包含一個空行:
(blank line)
a 0
1
10
! 100
那將來自根節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.