Total Accepted: 12041
Total Submissions: 39526
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,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
preTraverse(root, list, 1);
return list;
}
public void preTraverse(TreeNode root, ArrayList<ArrayList<Integer>> list,
int level) {
if (root == null) return;
if (list.size() < level) list.add(new ArrayList<Integer>());
list.get(level - 1).add(root.val);
preTraverse(root.left, list, level + 1);
preTraverse(root.right, list, level + 1);
}
}
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
ArrayList<Integer> levelList = new ArrayList<Integer>();
if (root == null) return list;
queue.add(root);
queue.add(null);
while (!queue.isEmpty() && queue.peek() != null) {
TreeNode top = queue.remove();
levelList.add(top.val);
if (top.left != null) queue.add(top.left);
if (top.right != null) queue.add(top.right);
if (queue.peek() == null) {
queue.remove();
queue.add(null);
list.add(new ArrayList<Integer>(levelList));
levelList.clear();
}
}
return list;
}
}