2012-11-16 71 views
0

如何預先打印每個後續級別的帶縮進(3個空格)的二叉樹。在這一點上,我通過使用幫助方法遞歸地打印出樹,但我不知道如何去編寫縮進。 這是我到目前爲止有:預訂打印具有縮進的二叉樹

public void print() { 
     printPreorder(root); 
     System.out.println(); 
} 

private void printPreorder(BinaryTreenode<E> node) { 
     System.out.println(node.getData() + " "); 
     if (node.getLeft() != null) { 
      printPreorder(node.getRight()); 
     } 
     if (node.getRight() != null) { 
      printPreorder(node.getRight()); 
     } 
} 

我馬上想到擺在一個計數器,並讓它每次方法遞歸調用遞增,然後縮進三個空格對每個增量,但我不確定這是做到這一點的最佳方式。

+1

首先要做的事情。檢查你的第一個遞歸調用。你打電話錯誤的分支。 – Grambot

回答

1

您正朝着正確的方向前進。這是一些一般的僞代碼:

void print(node) { 
    print(node, "") 
} 

private void print(node, indent) { 
    if(node is null) return 
    output(indent + node.data) 
    print(node.left, indent + " ") 
    print(node.right, indent + " ") 
} 
+0

糟糕/編輯:我意識到我使用'print'作爲'System.out.println'的方法名和別名,所以我將其改爲'output'。 – Dylan

+0

謝謝!這非常有幫助! –

+0

太棒了!請考慮將我的答案標記爲已接受,如果這有助於您解決問題! – Dylan