【LeeCode】102. 二叉树的层序遍历

时间:2023-01-13 22:01:55

【题目描述】

给你二叉树的根节点 ​root​ ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)

【示例】

【LeeCode】102. 二叉树的层序遍历


【迭代法】​​代码随想录​

需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑

层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上(队列Queue)

【LeeCode】102. 二叉树的层序遍历

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);
}
}
}