数据结构与算法(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值