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;
}
};
'Algorithm > dfs' 카테고리의 다른 글
[알고리즘] 리트코드 417. Pacific Atlantic Water Flow c++ // dp (0) | 2024.07.04 |
---|---|
백준 14888 연산자끼워넣기 c++ // dfs (0) | 2024.03.20 |
백준 14889 스타트와링크 c++ // dfs, 사람기준으로 생각하라. 일단 모든경우의수를 벌려놓고 생각하라 (0) | 2024.03.20 |
백준 2573 빙산 c++ // dfs, 구현, year에 대해 반복문 만들기 (0) | 2024.03.10 |
프로그래머스 소수찾기 c++ // 순열 3P1+3P2+3P3 하는방법, 소수판별함수, dfs (0) | 2023.12.04 |