给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如: 给定二叉树: [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7返回其层次遍历结果:
[ [3], [9,20], [15,7] ]来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
采用队列可实现题目要求。 先把根结点加入队列,然后每循环一次取出当前层的一个结点(直到把当前层的结点全部取出来为止,利用thisCount统计队列中当前层剩余的结点数),并把该结点的值存入一个列表。如果取出的结点有左右子结点,则把左右子结点一次存入队列,并用nextCount统计下一层的结点数,为下一层访问做准备。当前层的结点全部取出后,把当前层的列表存入一个大的列表。
List是一个接口,它的实现类有ArrayList和LinkedList。 嵌套List的初始化形式有如下几种(以List<List<Integer>>为例):
List<List<Integer>> list = new LinkedList<>();List<List<Integer>> list = new LinkedList();List<List<Integer>> list = new LinkedList<List<Integer>>();以上三种方法我都测试过,可以通过编译,一般采用第一种方法初始化。其他情况只要把Integer或者LinkedList替换掉即可。
如有不当之处,欢迎读者批评指正!