问题:我们如何逐级显示树节点?你能不能给我时间和空间有效的解决方案。
示例:
A
/ \
B C
/ \ / \
D E F G
void PrintTree(struct tree *root);
输出: 您必须逐级打印树节点
A
B C
D E F G
答案 0 :(得分:3)
在SO上节省空间和时间:
答案 1 :(得分:3)
如果你感到野蛮,并且想要简单地思考你所处的水平...... 你需要:
所以,从root开始。
把孩子放到第一个队列上
逐步完成它们,随时将他们的孩子带到第二个队列
切换到第二个队列,逐步完成,将他们的孩子推到第一个队列
打蜡,脱蜡。
真的只是对同一个想法的轻微扩展,广泛的第一次搜索或扫描,值得考虑作为模式,因为它适用于各种数据结构。事实上,几乎所有的东西都是树或特里,还有一些东西不是!
答案 2 :(得分:2)
此类访问称为广度优先或级别订单。您可以看到其他信息here。
基本上你
这应该通过FIFO结构轻松实现: