二叉树的层序遍历

28 阅读1分钟
// 二叉树的层序遍历  
// 输入:root = [3,9,20,null,null,15,7]  
// 输出:[[3],[9,20],[15,7]]  
public static List<List<Integer>> levelOrder(TreeNode root){  
    ArrayList<List<Integer>> ret = new ArrayList<>();  
    if(root==null)return ret;  
    LinkedList<TreeNode> queue = new LinkedList<>();  
    queue.offer(root);  
    while (!queue.isEmpty()){  
        ArrayList<Integer> level = new ArrayList<>();  
        int csize = queue.size();  
        for (int i = 1; i <=csize ; i++) {  
            TreeNode node = queue.poll();  
            level.add(node.val);  
            if(node.left!=null){  
                queue.offer(node.left);  
            }  
            if(node.right!=null){  
                queue.offer(node.right);  
            }  
        }  
        ret.add(level);  
    }  
    return ret;  
}