Skip to content

Commit c291f74

Browse files
Lintcode/src/chapter3_binary_tree_and_divide_and_conquer/BinaryTreeLevelOrderTraversal.java
1 parent c501213 commit c291f74

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package chapter3_binary_tree_and_divide_and_conquer;
2+
3+
import java.util.ArrayList;
4+
import java.util.LinkedList;
5+
import java.util.Queue;
6+
7+
import classes.TreeNode;
8+
9+
public class BinaryTreeLevelOrderTraversal {
10+
11+
/**
12+
* @param root: The root of binary tree.
13+
* @return: Level order a list of lists of integer
14+
*/
15+
16+
//2 mins AC! Cheers!
17+
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
18+
// write your code here
19+
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
20+
if(root == null) return result;
21+
Queue<TreeNode> q = new LinkedList();
22+
q.offer(root);
23+
while(!q.isEmpty()){
24+
int size = q.size();
25+
ArrayList<Integer> list = new ArrayList<Integer>();
26+
for(int i = 0; i < size; i++){
27+
TreeNode curr = q.poll();
28+
list.add(curr.val);
29+
if(curr.left != null) q.offer(curr.left);
30+
if(curr.right != null) q.offer(curr.right);
31+
}
32+
result.add(list);
33+
}
34+
return result;
35+
}
36+
37+
}

0 commit comments

Comments
 (0)