[摘要]数据结构与算法(C#实现)系列---树(二)                    Heavenkiller(原创)          public class InOrder:IPrePostVi...
       数据结构与算法(C#实现)系列---树(二)
                    Heavenkiller(原创)
 
         public class InOrder:IPrePostVisitor
         {
              private IVisitor visitor;
              public InOrder(IVisitor _vis){visitor=_vis;}
              #region IPrePostVisitor 成员
 
              public void PreVisit(object _obj)
              {
                   // TODO:  添加 InOrder.PreVisit 实现
              }
 
              public void Visit(object _obj)
              {
                   // TODO:  添加 InOrder.Visit 实现
                   this.visitor.Visit(_obj);
              }
 
              public void PostVisit(object _obj)
              {
                   // TODO:  添加 InOrder.PostVisitor 实现
              }
 
              #endregion
 
          }
         public class PostOrder:IPrePostVisitor
         {
              private IVisitor visitor;
              public PostOrder(IVisitor _vis){visitor=_vis;}
              #region IPrePostVisitor 成员
 
              public void PreVisit(object _obj)
              {
                   // TODO:  添加 PostOrder.PreVisit 实现
              }
 
              public void Visit(object _obj)
              {
                   // TODO:  添加 PostOrder.Visit 实现
              }
 
              public void PostVisit(object _obj)
              {
                   // TODO:  添加 PostOrder.PostVisitor 实现
                   this.visitor.Visit(_obj);
              }
 
              #endregion
 
         }
         protected class EnumVisitor:IVisitor
         {
              Queue thisQueue;
              public EnumVisitor(Queue _que)
              {
                   this.thisQueue=_que;
              }
              #region IVisitor 成员
 
              public void Visit(object _obj)
              {
                   // TODO:  添加 EnumVisitor.Visit 实现
                   this.thisQueue.Enqueue(_obj);
              }
 
              #endregion
         }
 
 
 
 
         #region IEnumerable 成员
 
         public IEnumerator GetEnumerator()
         {
              // TODO:  添加 Tree.GetEnumerator 实现
              EnumVisitor vis=new EnumVisitor(this.keyqueue);
              switch (this.traversaltype)
              {
                   case TraversalType.Breadth:
                       BreadthFirstTraversal(vis);
                        break;
                   case TraversalType.PreDepth:
                       PreOrder preVis=new PreOrder(vis);
                       DepthFirstTraversal(preVis);                       
                       break;
                   case TraversalType.InDepth:
                       InOrder inVis=new InOrder(vis);
                       DepthFirstTraversal(inVis);                    
                       break;
                  case TraversalType.PostDepth:
                       PostOrder postVis=new PostOrder(vis);
                       DepthFirstTraversal(postVis);                      
                       break;
              
                   default:
                       Console.WriteLine("WARNING:please set a travel type first!--void SetTraversalType(TraversalType _type) ");
                       //throw new Exception("WARNING:please set a travel type first!");//if not set a type, a exception will happen
                       break;
              }
              return this.keyqueue.GetEnumerator();
         }
 
         #endregion
 
  关键词:数据结构与算法(C#完成)系列---树(二)