Data structures and algorithms (C # implementation) series --- tree (2)
Heavenkiller (original)
Public class InOrder: IPrePostVisitor
{
Private IVisitor visitor;
Public InOrder (IVisitor _ vis) {visitor = _ vis ;}
# Region IPrePostVisitor Member
Public void PreVisit (object _ obj)
{
// TODO: Add InOrder. PreVisit implementation
}
Public void Visit (object _ obj)
{
// TODO: Add InOrder. Visit implementation
This. visitor. Visit (_ obj );
}
Public void PostVisit (object _ obj)
{
// TODO: Add InOrder. PostVisitor implementation
}
# Endregion
}
Public class PostOrder: IPrePostVisitor
{
Private IVisitor visitor;
Public PostOrder (IVisitor _ vis) {visitor = _ vis ;}
# Region IPrePostVisitor Member
Public void PreVisit (object _ obj)
{
// TODO: Add PostOrder. PreVisit implementation
}
Public void Visit (object _ obj)
{
// TODO: Add PostOrder. Visit implementation
}
Public void PostVisit (object _ obj)
{
// TODO: Add PostOrder. PostVisitor implementation
This. visitor. Visit (_ obj );
}
# Endregion
}
Protected class EnumVisitor: IVisitor
{
Queue thisQueue;
Public EnumVisitor (Queue _ que)
{
This. thisQueue = _ que;
}
# Region IVisitor Member
Public void Visit (object _ obj)
{
// TODO: Add EnumVisitor. Visit implementation
This. thisQueue. Enqueue (_ obj );
}
# Endregion
}
# Region IEnumerable Member
Public IEnumerator GetEnumerator ()
{
// TODO: Add Tree. GetEnumerator
EnumVisitor vis = new EnumVisitor (this. keyqueue );
Switch (this. traversaltype)
{
Case TraversalType. Breadth:
BreadthFirstTraversal (vis );
Break;
Case TraversalType. PreDepth:
& Nb