관리 메뉴

Mini

리트코드 1325 리프노드지우기 c++ 본문

Algorithm/dfs

리트코드 1325 리프노드지우기 c++

Mini_96 2024. 5. 17. 23:48

https://leetcode.com/problems/delete-leaves-with-a-given-value/description/?envType=daily-question&envId=2024-05-17

1. 의사코드

dfs 기반으로, dfs(현재노드)

내좌측, 우측을 탐색하는데

1. 기저사례 : 내가 null이면 null을 반환

2. 양쪽자식이 null 이고 내가 타겟이면 nullptr 반환

리프노드의 자식을 null로 명시적으로 대입해주는 코드가 인상깊었다.

 

 

2. 전체코드

 #include <bits/stdc++.h>
class Solution {
public:

    TreeNode* removeLeafNodes(TreeNode* root, int target) {
        if(root==nullptr) return nullptr; //현재가 널이면 널반환

        root->left=removeLeafNodes(root->left,target);
        root->right=removeLeafNodes(root->right,target);
        if(root->left==nullptr && root->right==nullptr && root->val==target)
            return nullptr;

        return root;
    }
};