pabloegpf1
1/18/2020 - 6:02 PM

Get list of TreeNodes by level using BFS

Get list of TreeNodes by level using BFS

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    public List<List<Integer>> levelOrder(TreeNode root) {
        
        Queue<TreeNode> q = new LinkedList<TreeNode>();
        List<List<Integer>> treeList = new ArrayList<List<Integer>>();
        if(root != null) q.add(root);        
        
        while(!q.isEmpty()){
            int levelSize = q.size(); // We get the length of the level with the queue size
            List<Integer> levelList = new ArrayList<Integer>();
            
            for(int i=0; i<levelSize; i++){ // Iterate through all the nodes in the level
                TreeNode currentNode = q.remove();
                levelList.add(currentNode.val);
                if(currentNode.left != null) q.add(currentNode.left);
                if(currentNode.right != null) q.add(currentNode.right);
            }
            
            treeList.add(levelList);
        }
        
        return treeList;
    }
    
}