算法攻关 - 从上到下打印二叉树 2 (O(n))_offer32
一、题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思考
我们在第一个代码分层打印二叉树的所有节点的时候,用的 BFS 广度优先搜索,中间为了存储每层需要打印的变量,使用了队列来作为中间存储。那么这个题是上一个题的延伸,我们可以观察到他的改变点为每一层为一个数组打印。这个我们能想到的是,当时我们是遍历当前层的时候,将下一层的节点已经存放到队列中。
三、代码实现
复制代码
四、小结
BFS 的广度优先搜索遍历的时候,是否能调整优化下呢?ArrayList 可以指定下初始化大小。而初始化大小可以根据扩容机制进行调整。
版权声明: 本文为 InfoQ 作者【小诚信驿站】的原创文章。
原文链接:【http://xie.infoq.cn/article/4df103278a0d1adc1bff61321】。文章转载请联系作者。
评论