题目描述:
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;
}
};
本文介绍了一种算法,用于对二叉树的节点进行分层收集并移除叶子节点,直至树为空。通过实例展示算法过程,如输入二叉树[1,2,3,4,5],输出结果为[[4,5,3],[2],[1]],解释了算法如何逐步移除并收集叶子节点。
782

被折叠的 条评论
为什么被折叠?



