質問

再帰的なシナリオでは、訪問者のパターンを使用するためのいずれかの利点がありますか?もしそうなら、あなたはプログラムでそれを証明することができますか?

役に立ちましたか?

解決

どのようにバイナリツリーをトラバースは?例えば

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);
    }
  }
}

他のヒント

私は、主な利点は、それが唯一の1つのレベルの深さのコレクションを超える反復を必要とすることであると思います。これは、コールバックすることができますが、少なくとも受け入れる()メソッドは、きれいになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top