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

/** 你如何打印这些东西?例如 theTree.preOrder(theTree.returnRoot()); 进入 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(" ");
  }
}
4

1 回答 1

0

访问者模式适用于遍历对象结构。要了解访问者,请参阅http://www.oodesign.com/visitor-pattern.html。如果这对你来说太复杂了,这里是 java http://en.wikipedia.org/wiki/Visitor_pattern中更容易理解的访问者

您必须创建打印当前访问节点的访问者。

要更改遍历顺序,您可以使用您所拥有的 ( postOrder,preOrder,inOrder) 或者您可以让访问者方法返回一些值。值应该意味着 noIteration/inOrder/preOrder/postOrder。这样做的好处是您可以在任何节点处停止/更改遍历。

于 2013-10-07T14:11:15.007 回答