题目描述
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
示例 2:
示例 3:
提示:
- 树中节点数目在范围
[0, 2000]
内
-1000 <= Node.val <= 1000
解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { List<List<Integer>> res=new ArrayList<>();
public List<List<Integer>> levelOrder(TreeNode root) { if (root==null){ return res; } helper(root, 0); return res; }
public void helper(TreeNode node,int level){ if (level==res.size()){ res.add(new ArrayList<Integer>()); } res.get(level).add(node.val); if (node.left!=null){ helper(node.left, level+1); } if (node.right!=null){ helper(node.right, level+1); } } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<>(); if (root==null){ return res; } Queue<TreeNode> queue=new LinkedList<>(); queue.add(root);
while (!queue.isEmpty()){ List<Integer> temp=new ArrayList<>(); int currentSize=queue.size(); for (int i = 0; i < currentSize; i++) { TreeNode pollNode = queue.poll(); temp.add(pollNode.val); if (pollNode.left!=null){ queue.add(pollNode.left); } if (pollNode.right!=null){ queue.add(pollNode.right); } } res.add(temp); } return res; }
}
|
来源:力扣(LeetCode)
链接:102. 二叉树的层序遍历 - 力扣(LeetCode)