數據結構與算法(C#實現)系列---演示篇(二)
Heavenkiller(原創)
public static void ShowGeneralTree_travel()
{
IEnumerator tmpIEnum;
Tree.TraversalType travelType=0;
//---------------------提示----------------------------
Console.WriteLine("please choose a the No. of a item you want to travel:");
Console.WriteLine("1.BreadthFirst----- 廣度遍歷");
Console.WriteLine("2.PreDepthFirst-----前序遍歷");
Console.WriteLine("3.InDepthFirst----中序遍歷");
Console.WriteLine("4.PostDepthFirst----後序遍歷");
switch(Console.ReadLine())
{
case "1"://Show Stack
travelType=Tree.TraversalType.Breadth;
Console.WriteLine("廣度遍歷");
break;
case "2"://SortedList
travelType=Tree.TraversalType.PreDepth;
Console.WriteLine("前序遍歷");
break;
case "3":
travelType=Tree.TraversalType.InDepth;
Console.WriteLine("中序遍歷");
break;
case "4":
travelType=Tree.TraversalType.PostDepth;
Console.WriteLine("後序遍歷");
break;
default:
break;
}
//構造一棵廣義樹 generaltree
GeneralTree A=new GeneralTree("A");
GeneralTree B=new GeneralTree("B");
GeneralTree C=new GeneralTree("C");
GeneralTree D=new GeneralTree("D");
GeneralTree E=new GeneralTree("E");
GeneralTree F=new GeneralTree("F");
A.AttackSubtree(B);
A.AttackSubtree(C);
B.AttackSubtree(D);
B.AttackSubtree(E);
A.AttackSubtree(F);
//show the operation
Console.WriteLine("A.AttackSubtree(B)");
Console.WriteLine("A.AttackSubtree(C)");
Console.WriteLine("B.AttackSubtree(D)");
Console.WriteLine("B.AttackSubtree(E)");
Console.WriteLine("A.AttackSubtree(F)");
//--------------------------------------------------------
A.SetTraversalType(travelType);//設置遍歷類型
tmpIEnum=A.GetEnumerator();
//Console.WriteLine("begin to depthfist travel:");
while(tmpIEnum.MoveNext())
{
Console.WriteLine(t