//深度优先
类节目
{
静态无效的主要(字串[] args)
{
INT []号= INT新[] {1,3,5,7};
列表数据=新名单();
堆栈的OpenStack =新的堆栈();
树根=新树();
树父=根;
而(真)
{
如果(parent.GetDeep()== 4)
{
parent.printf();
}
其他
{
VAR tempSon = number.ToList();
的foreach(在tempSon VAR项)
{
)树节点=新树(;
Node.NodeData =项目;
Node.Parent =父母;
openStack.Push(节点);
}
}
如果(openStack.Count == 0)[颜色= darkred] [/ COLOR]
突破;
变种的ItemData = openStack.Pop();
父=的ItemData;
}
System.Console.Read();
}
公共静态无效的printf(列表数据)
{
串D ="英寸;
data.ForEach(p值= D 1和D = D + P);
的System.Console.WriteLine(D);
}
}
类树
{
公共树父;
公众诠释NODEDATA;
公开名单的儿子=新名单();
公众诠释GetDeep()
{
INT I = 0;
VAR P =这一点;
而(真)
{
如果(P == NULL)
{
回报我;
}
否则
{
P = p.Parent;
我++;
}
}
}
公共无效的printf()
{
字符串PF ="英寸;
VAR P =这一点;
而(真)
{
如果(P == NULL)
{
的System.Console.WriteLine(PF);
返回;
}
否则
{
如果(p.NodeData!= 0)
{
PF = p.NodeData + PF;
}
P = p.Parent;
}
}
}
}
//广度优先
类节目
{
静态无效的主要(字串[] args)
{
INT []号= INT新[] {1,3};
名单
堆栈<树>的OpenStack =新的堆栈<树>();
队列<树> openQueue =新队列<树>();
树根=新树();
树父=根;
而(真)
{
如果(parent.GetDeep()== 4)
{
parent.printf();
}
其他
{
VAR tempSon = number.ToList();
的foreach(在tempSon VAR项)
{
)树节点=新树(;
Node.NodeData =项目;
Node.Parent =父母;
// openStack.Push(节点);
openQueue.Enqueue(节点);
}
}
如果(openQueue.Count == 0)//如果(openStack.Count == 0)
打破;
变种的ItemData = openQueue.Dequeue(); //openStack.Pop();
父=的ItemData;
}
System.Console.Read();
}
公共静态无效的printf(名单
{
串D =“”;
data.ForEach(P => D = D + P);
的System.Console.WriteLine(D);
}
}
类树
{
公共树父;
公众诠释NODEDATA;
公开名单<树>儿子=新的List <树>();
公众诠释GetDeep()
{
INT I = 0;
VAR P =这一点;
而(真)
{
如果(P == NULL)
{
回报我;
}
否则
{
P = p.Parent;
我++;
}
}
}
公共无效的printf()
{
字符串PF =“”;
VAR P =这一点;
而(真)
{
如果(P == NULL)
{
的System.Console.WriteLine(PF);
返回;
}
否则
{
如果(p.NodeData!= 0)
{
PF = p.NodeData + PF;
}
P = p.Parent;
}
}
}
}