Binary Tree Level Order Traversal II

来源:互联网 发布:mac os x 10.12.6镜像 编辑:程序博客网 时间:2024/06/18 10:24
Problem:

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]]


Solution:
/**
 * 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>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> result = new LinkedList<>();
        
        ArrayList<TreeNode> queue = new ArrayList<>();
        
        if(root==null)
             return result;
        
        queue.add(root);
        
        while(!queue.isEmpty())
        {
             int cnt = queue.size();
             ArrayList<Integer> list = new ArrayList<>();
             while(cnt-->0)
             {
                 TreeNode t = queue.remove(0);
                 list.add(t.val);
                 if(t.left!=null)
                     queue.add(queue.size(), t.left);
                 if(t.right!=null)
                     queue.add(queue.size(),t.right);
         }
         result.add(0,list);
      }
        
        return result;
    }
}
0 0
原创粉丝点击