Leetcode - 366. Find Leaves of Binary Tree

숲사람·2022년 7월 14일
0

멘타트 훈련

목록 보기
92/237

문제

아래 동작을 수행하는 코드를 작성해라.

  • 리프노드를 출력하고
  • 출력한 리프노드 제거
  • 트리가 empty가 될때까지 반복

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;
    }
};
profile
기록 & 정리 아카이브 용도 (보다 완성된 글은 http://soopsaram.com/documentudy)

0개의 댓글