2
我在使用Java創建的基本二叉查找樹時遇到了問題。我試圖在控制檯中輸出樹結構,並在節點值之前使用預先佔用的空格來表示節點的深度。樹結構不正確打印
由於某種原因,我的printTree()
函數正在輸出一個似乎稍微向後的樹結構。我不認爲(5 0.0)
會縮進,因爲它會留在像這樣的基本樹中的根。
下面是我的功能和輸出:
注:c
創建了根,s
增加了一個鍵和值,和xp
輸出樹。
private int k;
private float d;
private Node left, right;
public Node(int k) {
this.k = k;
}
public Node(int k, float d) {
this.k = k;
this.d = d;
}
private int height(Node n) {
if (n == null)
return -1;
return 1 + Math.max(height(n.left), height(n.right));
}
private void printTree(Node n) {
if (n == null)
return;
System.out.println(new String(new char[3 * height(n)]).replace("\0", " ") + "(" + n.k + " " + n.d + ") ");
printTree(n.left);
printTree(n.right);
}
輸出:
我敢肯定,基於我的輸入有5不應該在所有的,因爲這將是根節點縮進。
我認爲它應該是這個樣子(基於二進制搜索樹):
(5 0.0)
(4 1.2)
(2 3.5)
(6 7.5)
(87 96.5)
(當然是有前綴空間的正確量)
任何人都可以解釋我是什麼做錯了?
你可以用'maxHeight'來定義你的意思嗎? – Nic
您需要找到所有節點的最大高度。在上面的'height(...)'函數的當前實現中,這將是'height(rootNode)'。 – realitybreeder