ITPub博客

首页 > 应用开发 > IT综合 > 数据结构与算法(C#实现)系列---树(二) (转)

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

原创 IT综合 作者:themoney 时间:2007-09-30 17:12:29 0 删除 编辑
数据结构与算法(C#实现)系列---树(二) (转)[@more@]

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

  Heavenkiller(原创)

XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  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

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10794571/viewspace-974268/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    119
  • 访问量
    337676