Skip to content

Instantly share code, notes, and snippets.

@sreeprasad
Created November 16, 2014 18:38
Show Gist options
  • Save sreeprasad/9fbf800a9bb3596cec07 to your computer and use it in GitHub Desktop.
Save sreeprasad/9fbf800a9bb3596cec07 to your computer and use it in GitHub Desktop.
Level Order Traversal LeetCode
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list = new ArrayList<>();
Queue<TreeNode> q = new java.util.LinkedList<TreeNode>();
ArrayList<Integer> level;
if(root!=null){
level = new ArrayList<Integer>();
level.add(root.val);
list.add(level);
q.add(root);
level = new ArrayList<Integer>();
int currentLevel=1;
int nextLevel =0;
int visited =0;
while(!q.isEmpty()){
visited++;
TreeNode node = q.remove();
if(node.left!=null){
level.add(node.left.val);
q.add(node.left);
nextLevel++;
}
if(node.right!=null){
level.add(node.right.val);
q.add(node.right);
nextLevel++;
}
if( visited == currentLevel ){
visited=0;
currentLevel = nextLevel;
nextLevel=0;
if(level.size()>0){
list.add(level);
level = new ArrayList<>();
}
}
}
}
return list;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment