【发布时间】:2011-09-08 18:53:18
【问题描述】:
我正在尝试打印这棵树:
1
/ \
2 3
/ / \
4 5 6
这样:
1
2 3
4 5 6
我写了这段代码:
void print_g(Tree t)
{
Queue q=initQueue();
Tree tmp=initTree();
if(!isTreeEmpty(t))
enqueue(q,t);
while(!isQueueEmpty(q))
{
tmp=dequeue(q);
printf("%d ",*((int *)Root(tmp)));
if(!isTreeEmpty(subLeft(tmp)))
enqueue(q,subLeft(tmp));
if(!isTreeEmpty(subRight(tmp)))
enqueue(q,subRight(tmp));
}
}
但是这段代码是这样打印的:
123456
我想不出如何解决打印问题。 有人可以写伪代码吗??
谢谢。
【问题讨论】:
-
您的代码在任何地方都没有“\n”,您希望它如何显示?您必须在每个级别加入一个分隔符。
-
这不是一个重复的问题,这个问题是关于如何向 BFS 添加新行,而不是如何更好地实现 BFS。
-
出于帮助查找的目的,这种遍历有时被称为“迭代深化”。
标签: c