아래 동작을 수행하는 코드를 작성해라.
Input: root = [1,2,3,4,5]
Output: [[4,5,3],[2],[1]]
현재 트리의 leef node를 출력하고 제거하는걸 계속 반복.
class Solution {
TreeNode *dfs(TreeNode *node, vector<int> &leef) {
if (!node)
return NULL;
if (!node->left && !node->right) {
leef.push_back(node->val);
return NULL;
}
node->left = dfs(node->left, leef);
node->right = dfs(node->right, leef);
return node;
}
public:
vector<vector<int>> findLeaves(TreeNode* root) {
vector<vector<int>> ret;
TreeNode *n = NULL;
do {
vector<int> leef;
n = dfs(root, leef);
ret.push_back(leef);
} while(n);
return ret;
}
};