數據結構與算法(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

發佈了2 篇原創文章 · 獲贊 0 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章