給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:
給定二叉樹:?[3,9,20,null,null,15,7],
? ? 3
? ?/ \
? 9 ?20
? ? / ?\
? ?15 ? 7
返回其層次遍歷結果:
[
? [3],
? [9,20],
? [15,7]
]
思路:見代碼。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {List<List<Integer>> levels = new ArrayList<List<Integer>>();public void helper(TreeNode node, int level) {if (levels.size() == level){levels.add(new ArrayList<Integer>());}levels.get(level).add(node.val);if (node.left != null)helper(node.left, level + 1);if (node.right != null)helper(node.right, level + 1);}public List<List<Integer>> levelOrder(TreeNode root) {if (root == null) return levels;helper(root, 0);return levels;}
}