使用递归思想, 用整数n把握阶层数,取相应阶层的list,去添加每层的值


public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
        // write code here
        ArrayList<ArrayList<Integer>> results = new ArrayList<>(10);
        if(root != null){
            ArrayList<Integer> first = new ArrayList<>();
            first.add(root.val);
            results.add(first);
            detailOrder(root, 1, results);
        }

        return results;
    }
    private void detailOrder(TreeNode node, int n, ArrayList<ArrayList<Integer>> result) {
        if(node.right ==null && node.left == null){
            return;
        }
        ArrayList<Integer> levelNodes = null;
        //取result中对应层数的list,如果初次到达该阶层,就新建一个list
        if (n >= result.size()) {
            levelNodes = new ArrayList<>();
            result.add(levelNodes);
        } else {
            levelNodes = result.get(n);
        }
        if (node.left != null) {
            levelNodes.add(node.left.val);
            detailOrder(node.left, n + 1, result);
        }
        if (node.right != null) {
            levelNodes.add(node.right.val);
            detailOrder(node.right, n + 1, result);
        }

    }
}