2009-04-08 92 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()方法是干净的。