二叉树-根据级别打印元素
|
在采访中我问了这个问题:
可以说我们上面有二叉树,我怎么能产生像下面这样的输出
2 7 5 2 6 9 5 11 4
我回答说可能是我们可以拥有一个级别计数变量,并通过检查每个节点的级别计数变量来依次打印所有元素。
可能我错了。
有人可以为我们如何实现这一目标提供想法吗?
没有找到相关结果
已邀请:
7 个回复
蜂佬渺
人们喜欢开始编号 与0。) 所以,如果我们要访问元素 逐级(从左到右,如 通常),我们将从0级开始 j,然后转到f和k的级别1, 然后进入2级以获取a,h和z,然后 最终进入d的3级。 这种逐级遍历是 称为广度优先遍历 因为我们探索广度,即 给定树的全宽 水平,然后再深入。
弛保矮瘦敖
,这就是它的完成方式(我发现的非常简单/简洁的代码段)。 您基本上使用队列,操作顺序如下所示:
对于这棵树(直接来自维基百科):
蜗仓馈
末钉蹈泰唬
迭代加深也可以工作并节省内存使用,但要以计算时间为代价。
哭木算
驮帽俺篮号
,用于存储当前打印级别的所有元素: 收集指向容器中当前级别中所有节点的指针 打印容器中列出的节点 新建一个容器,添加容器中所有节点的子节点 用新容器覆盖旧容器 重复直到容器为空
厢界山攀
最后打印每个级别的列表。