728x90
반응형
https://www.acmicpc.net/problem/1068
#include <iostream>
#include <vector>
using namespace std;
vector<int> tree[50];
int n, k, root;
int leafcnt = 0;
int dfs(int node){
if(node == k) return -1;
if(tree[node].size() == 0){
leafcnt++;
return 0;
}
for(int i = 0; i < tree[node].size(); i++){
int tmp = dfs(tree[node][i]);
if(tmp == -1 && tree[node].size() == 1) leafcnt++;
}
return 0;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
for(int i = 0; i < n; i++){
int p;
cin >> p;
if(p == -1) root = i;
else tree[p].push_back(i);
}
cin >> k;
dfs(root);
cout << leafcnt;
return 0;
}
리프 노드인 경우
1. 자식 노드가 없음
2. 자식 노드가 하나인데 그 자식 노드가 제거됨
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1781번 컵라면 (C++) (0) | 2023.05.10 |
---|---|
[BOJ] 15565번 귀여운 라이언 (C++) (0) | 2023.05.05 |
[BOJ] 18429번 근손실(C++) (0) | 2023.03.19 |
[BOJ] 2263번 트리의 순회 (C++) (0) | 2023.03.18 |
[BOJ] 11725번 트리의 부모 찾기 (C++) (0) | 2023.03.17 |