【题目描述】
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)
【示例】
需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑
层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上(队列Queue)
class Solution {
List<List<Integer>> res = new LinkedList<>();
public List<List<Integer>> levelOrder(TreeNode root) {
check(root);
return res;
}
private void check(TreeNode root) {
Queue<TreeNode> stack = new LinkedList<>();
if (root == null) return;
stack.add(root);
while (!stack.isEmpty()){
int len = stack.size();
List<Integer> list = new ArrayList<>();
while (len > 0){
TreeNode node = stack.poll();
list.add(node.val);
if (node.left != null) stack.offer(node.left);
if (node.right != null) stack.offer(node.right);
len--;
}
res.add(list);
}
}
}