102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
思路:先序遍历
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (root==null){
return res;
}
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
int curL = 0;
while(!queue.isEmpty()){
List<Integer> temp = new ArrayList<Integer>();
curL = queue.size();
for (int i=0;i<curL;i++){
TreeNode peek = queue.remove();
temp.add(peek.val);
if (peek.left!=null){
queue.add(peek.left);
}
if (peek.right!=null){
queue.add(peek.right);
}
}
res.add(temp);
}
return res;
}
}
LG版code
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) return result;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
while(!q.isEmpty()){
int size = q.size();
ArrayList<Integer> intList = new ArrayList<>();
for (int i = 0; i<size; i++){
TreeNode tn = q.poll();
intList.add(tn.val);
if (tn.left != null) {
q.add(tn.left);
}
if (tn.right != null) {
q.add(tn.right);
}
}
result.add(intList);
}
return result;
}
}