首页 > 其他 > 详细

[lintcode medium] Binary Tree Level Order Traversal II

时间:2016-01-06 06:43:38      阅读:133      评论:0      收藏:0      [点我收藏+]

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--;
        }
    }
}

 

[lintcode medium] Binary Tree Level Order Traversal II

原文:http://www.cnblogs.com/kittyamin/p/5104275.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!