2009-04-08 51 views

回答

3

如何遍歷二叉樹?例如

private class NodeVisitor{ 
public void visit(VisitableNode<T> node){ 
    if (node!=null) { 
     print node.data; 
    } 
} 
} 



public class VisitableTree<T> { 

    private VisitableNode<T> root; 
    public void printNodes(){ 
    new NodeVisitor.visit(root); 
    } 

private class VisitableNode<T> { 
    T data; 
    VisitableNode<T> left; 
    VisitableNode<T> right; 
    public void visit(NodeVisitor<T> visitor){ 
     ..do something 
     visitor.visit(left); 
     visitor.visit(right); 
    } 
    } 
} 
+0

這是真的遞歸嗎?我要麼失去了一些東西,要麼不是。我想你想(在你的VisitNode類)visitor.visit(this);然後你調用this.visit(左)(和右)。見[此鏈接](http://cs.lmu.edu/~ray/notes/binarytrees/)。 – javamonkey79 2014-11-05 23:16:07

0

我認爲主要好處是它只需要迭代超過集合1級深度。它可以回調,但至少accept()方法是乾淨的。