107. Binary Tree Level Order Traversal II

https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/

image.png

(图片来源https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/

日期 是否一次通过 comment
2020-03-15 0

递归

public List> levelOrderBottom1(TreeNode root) {
        List> result = new LinkedList<>();   // 方便移动
        if(root == null) {
            return result;
        }

        helper(root, result, 0);

        return result;
    }

    private void helper(TreeNode root, List> result, int level) {

        if(root == null) {
            return;
        }

        if(level >= result.size()) {
            result.add(0, new ArrayList<>());  // 放最前面
        }

        result.get(result.size()- 1 - level).add(root.val); // 增量放在对应层级(size()-1) - level
        if(root.left != null) {
            helper(root.left, result, level+1);
        }
        if(root.right != null) {
            helper(root.right, result, level+1);
        }

    }

非递归

public List> levelOrderBottom(TreeNode root) {
        List> result = new LinkedList<>();  //  方便移动
        if(root == null) {
            return result;
        }

        Queue nodeQ = new LinkedList<>();
        nodeQ.offer(root);

        while(! nodeQ.isEmpty()) {
            int qLen = nodeQ.size();
            List oneLevel = new ArrayList<>();
            for(int i=0; i

你可能感兴趣的:(107. Binary Tree Level Order Traversal II)