题目描述:
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:
Input: [1,2,3,4,5] 1 / \ 2 3 / \ 4 5 Output: [[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:
[]
class Solution {
public:
vector<vector<int>> findLeaves(TreeNode* root) {
vector<vector<int>> result;
height(root,result);
return result;
}
int height(TreeNode* root, vector<vector<int>>& result)
{
if(root==NULL) return 0;
int h=max(height(root->left,result),height(root->right,result))+1;
if(result.size()<h) result.resize(h);
result[h-1].push_back(root->val);
return h;
}
};