簡體   English   中英

二叉樹的前序遍歷打印出我不想要的額外值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM