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