您的位置:首页 > 其它

Binary Tree Level Order Traversal II --- LeetCode

2015-01-09 10:51 387 查看
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,#,#,15,7}
,

3
/ \
9  20
/  \
15   7


return its bottom-up level order traversal as:

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


confused what 
"{1,#,2,3}"
 means? >
read more on how binary tree is serialized on OJ.
解题思路:同Binary Tree Level Order Traversal, 使用两个队列来遍历,递归遍历的同时记录每层的节点值到list中,遍历到叶节点后倒序添加到List<List<Integer>>结果集合中。

/**

 * Definition for binary tree

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

public class Solution {

    

   public List<List<Integer>> traversal(Queue<TreeNode> queue,List<List<Integer>> rs){
       List<Integer> list=new ArrayList<Integer>();
       Queue<TreeNode> q=new LinkedList<TreeNode>();
       while(!queue.isEmpty()){
       
TreeNode node=queue.poll();
       
if(node!=null){
       
list.add(node.val);
       
if(node.left!=null){
       
q.offer(node.left);
       
}
       
if(node.right!=null){
       
q.offer(node.right);
       
}
       
}        

       }
       if(!q.isEmpty()){
       
rs=traversal(q,rs);
       }   

        rs.add(list);
   return rs;

   }

    public List<List<Integer>> levelOrderBottom(TreeNode root) {

           List<List<Integer>> rs=new ArrayList<List<Integer>>();

           Queue<TreeNode> queue=new LinkedList<TreeNode>();

           if(root==null){

          return rs;

           }

           queue.offer(root);

           rs=traversal(queue,rs);                    

      return rs;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法