二叉树文章系列:
前言
这是[LeetCode精选Top面试]系列文章的第1篇/145篇。
在这个系列中,我们会按照题目类别进行总结。对于每一道题目,会给出一种或多种的算法思路,以及最精炼、最高效的代码。如果代码中涉及到语言上的语法知识,我们也会在知识扩展小节中进行详解。
在每个系列介绍完成之后,我们会再次回顾总结,提炼出通用解法和代码模板。
希望各位持续关注本系列,和我们一起前进,DayDayUp~
一、题目
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
二、思路分析
解法一:广度优先搜索BFS
广度优先搜索是从树的根节点开始,沿着树的宽度来遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索通常采用队列来辅助实现。
在题目中要求按照层序遍历,实现逐层地从左向右访问所有的结点。这正好符合广度优先搜索的策略。
我们可以立即想到普通广度优先搜索的模板: