107. Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

 

return its bottom-up level order traversal as:

[
  [15,7],
  [9,20],
  [3]
]




按层遍历,不过是从下往上,依然是Iteratively, recursively都可以。。。
加List的时候从头加就好了。

Iteratively:
public class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        if (root == null) return res;
        Queue<TreeNode> q = new LinkedList<TreeNode>();
        int cur = 0;
        int left = 1;
        q.add(root);
        List<Integer> tempList = new ArrayList<>();
        while (!q.isEmpty()) {
            TreeNode temp = q.poll();
            left--;
            tempList.add(temp.val);
            if (temp.left != null) {
                q.add(temp.left);
                cur++;
            }
            if (temp.right != null) {
                q.add(temp.right);
                cur++;
            }
            if (left == 0) {
                res.add(0,tempList);
                tempList = new ArrayList<>();
                left = cur;
                cur = 0;
            }
            
        }
        return res;
    }
}


Recursively:
想了一下最好是pre-order,便于添加List..

public class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        helper(res, root, 0);
        return res;
    }
    
    public void helper(List<List<Integer>> res, TreeNode root, int level) {
        if (root == null) return;
        if (level >= res.size()) {
            List<Integer> tempList = new ArrayList<Integer>();
            tempList.add(root.val);
            res.add(0,tempList);
        } else {
            res.get(res.size() - 1 - level).add(root.val);
        }
        helper(res,root.left,level+1);
        helper(res,root.right,level+1);
    }
}

  

 


posted @ 2016-11-04 04:39  哇呀呀..生气啦~  阅读(98)  评论(0)    收藏  举报