Medium 366题 Find Leaves of Binary Tree

来源:互联网 发布:列式数据库 olap 编辑:程序博客网 时间:2024/05/22 14:41

Question:

Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty.

Example:
Given binary tree 

          1         / \        2   3       / \           4   5    

Returns [4, 5, 3], [2], [1].

Explanation:

1. Removing the leaves [4, 5, 3] would result in this tree:

          1         /         2          

2. Now removing the leaf [2] would result in this tree:

          1          

3. Now removing the leaf [1] would result in the empty tree:

          []         

Returns [4, 5, 3], [2], [1].



Solution:


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<List<Integer>> findLeaves(TreeNode root) {        List<List<Integer>> ans=new ArrayList<List<Integer>>();        dfs(root,ans);        return ans;    }    public int dfs(TreeNode node, List<List<Integer>> ans)    {        if(node==null)  return -1;        int level=1+Math.max(dfs(node.left,ans),dfs(node.right,ans));        if(ans.size()<=level)            ans.add(new ArrayList<Integer>());        ans.get(level).add(node.val);        return level;    }}



0 0