[lintcode medium] Binary Tree Level Order Traversal II

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).

Example

Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

 

return its bottom-up level order traversal as:

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


/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
 
 
public class Solution {
    /**
     * @param root: The root of binary tree.
     * @return: buttom-up level order a list of lists of integer
     */
    public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
        // write your code here
        ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
        ArrayList<TreeNode> list1=new ArrayList<TreeNode>();
        ArrayList<TreeNode> list2=new ArrayList<TreeNode>();
        
        
        if(root==null) return res;
        list1.add(root);
        
        while(!list1.isEmpty())
        {
            ArrayList<Integer> list=new ArrayList<Integer>();
            for(int i=0;i<list1.size();i++)
            {
               TreeNode node=list1.get(i);
               list.add(node.val);
               if(node.left!=null) list2.add(node.left);
               if(node.right!=null) list2.add(node.right);
            }
            res.add(list);
            ArrayList<TreeNode> tmp=list1;
            list1=list2;
            list2=tmp;
            list2.clear();
        }
        
        reverse(res);
        return res;
    }
    
    public void reverse(ArrayList<ArrayList<Integer>> list)
    {
        int n=list.size();
        int i=0;
        int j=n-1;
        while(i<j)
        {
            ArrayList<Integer> temp=list.get(i);
            list.set(i,list.get(j));
            list.set(j,temp);
            i++;
            j--;
        }
    }
}

 

posted on 2016-01-06 03:31  一心一念  阅读(140)  评论(0编辑  收藏  举报

导航