2013-10-07 43 views
0
class TreeTraversal 
{ 
    public void main(String[] args) throws IOException 
    { 
    System.out.println("Displaying the tree"); 
    theTree.displayTree(); 

/**如何打印這些東西?例如Tree.preOrder(theTree.returnRoot());在jTextArea1? */控制檯到jTextArea1問題。 (空洞!?)

StringBuilder order1 = new StringBuilder("Inorder traversal: "); 
    jTextArea1.append("\n"+order1); 
    //System.out.println("Inorder traversal"); 
    theTree.inOrder(theTree.returnRoot()); 
    //System.out.println(" "); 

    StringBuilder order2 = new StringBuilder("Preorder traversal: "); 
    jTextArea1.append("\n"+order2); 
    //System.out.println("Preorder traversal"); 
    theTree.preOrder(theTree.returnRoot()); 
    //System.out.println(" "); 

    StringBuilder order3 = new StringBuilder("Postorder traversal: "); 
    jTextArea1.append("\n"+order3); 
    //System.out.println("Postorder traversal"); 
    theTree.postOrder(theTree.returnRoot()); 
    //System.out.println(" "); 
    } 
} 

回答

0

訪問者模式適用於遍歷對象結構。要了解訪問者,請參閱http://www.oodesign.com/visitor-pattern.html。如果這對你來說太複雜了,這裏更容易理解java訪問者http://en.wikipedia.org/wiki/Visitor_pattern

你必須創建打印當前訪問節點的訪問者。

要更改遍歷順序,您可以使用您擁有的(postOrder,preOrder,inOrder),或者您可以使visitor方法返回一些值。值應該表示noIteration/inOrder/preOrder/postOrder。 這樣做的好處是你可以在任何節點停止/改變遍歷。