WEB开发网
开发学院软件开发C语言 数据结构与算法(C#实现)系列---树(二) 阅读

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

 2004-02-07 12:45:01 来源:WEB开发网   
核心提示: 数据结构与算法(C#实现)系列---树(二) Heavenkiller(原创) public class InOrder:iprePostVisitor { PRivate IVisitor visitor; public InOrder(IVisitor _vis){visitor=_vis;} #regi

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

Tags:数据结构 算法 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接