【LeetCode】102. 二叉树的层序遍历(Java)

    科技2022-08-05  91

    给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<List<Integer>> levelOrder(TreeNode root) { //BFS //队列 List<List<Integer>> res = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); //如果root为空,不添加(就不会进入while) if (root != null) queue.offer(root); //遍历所有节点 while (!queue.isEmpty()) { List<Integer> list = new ArrayList<>(); int size = queue.size(); //遍历当前层的节点 for (int i = 0; i < size; i++) { //取出一个节点,添加到list中 TreeNode tree = queue.poll(); list.add(tree.val); //把当前节点的左右子树添加到队列中 if (tree.left != null) queue.offer(tree.left); if (tree.right != null) queue.offer(tree.right); } //小循环结束后,添加到res中 res.add(list); } return res; } }
    Processed: 0.008, SQL: 8