【LeetCode Hot100 | 每日刷题】二叉树的层序遍历
题目:
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
难点:
需要把每一层的节点值都单独存储到一个list集合中,也就是最后返回结果需要是List<List<Integer>>类型的。
思路:
对该树进行BFS,利用Java的ArrayDeque队列,每一层单独来一次循环以该层的节点数为循环截止条件。
过程如下:
可以看到,在 while 循环的每一轮中,都是将当前层的所有结点出队列,再将下一层的所有结点入队列,这样就实现了层序遍历。
Java代码:
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {ArrayList<List<Integer>>res=new ArrayList<>();Queue<TreeNode>qu=new ArrayDeque<>();if(root!=null){qu.add(root);}while(!qu.isEmpty()){List<Integer>list=new ArrayList<>();int n=qu.size();for(int i=0;i<n;i++){TreeNode node=qu.poll();list.add(node.val);if(node.left!=null){qu.add(node.left);}if(node.right!=null){qu.add(node.right);}}res.add(list);}return res;}
}