科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道数据结构与算法(C#实现)系列---树(二)

数据结构与算法(C#实现)系列---树(二)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   public class InOrder:IPrePostVisitor { private IVisitor visitor; public InOrder(IVisitor _vis){visitor=

作者:中国IT实验室 来源:中国IT实验室 2007年9月12日

关键字: 编程

  • 评论
  • 分享微博
  • 分享邮件
  

 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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章