读书人

请问一个算法的实现

发布时间: 2012-02-06 15:52:45 作者: rapoo

请教一个算法的实现
请高手指点如何实现按层次方式遍历森林的算法,谢谢!

[解决办法]
struct node
{
int data;
node *child[10];//假设每个结点最多有10个孩子
}
node *forest[20];//假设森林有二十棵树


伪代码:

Order(T)
{
Queue Q;//定义队列 自己写 或用STL
node *p;//临时结点存储出队的结点
for (int i=0;i <20;i++)
if(forest[i]!= NULL) enqueue(Q, forest[i]);
while(!empty(Q))
{
delqueue(Q,p);
visit(p);
for(i=0;i <10;i++)
if(p-> child[i] != NULL) enqueue(Q, right(t));

}
}
[解决办法]

void travelTree(Tree* T)
{
Queue Q;
Tree* N;

if (T == NULL) return;
Q.push(T);
while(!Q.isempty()){
N = Q.pop();
Output(N);
if (N-> left) Q.push(N-> left);
if (N-> right) Q-> push(N-> right);
}
}

读书人网 >C语言

热点推荐