- 完全二叉树
陈可榛赶紧抄
- @ 2026-10-11 14:31:33
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N][3],n,dp[N],f[N];
int full[N],comp[N];
void dfs(int x){
if(x==0) return;
int l=a[x][1],r=a[x][2];
dfs(l);
dfs(r);
dp[x]=max(dp[l],dp[r])+1;
if(full[l] && full[r] && dp[l]==dp[r]){
full[x]=1;
}if(full[l] && comp[r] && dp[l]==dp[r]){
comp[x]=1;
}if(comp[l] && full[r] && dp[l]-1==dp[r]){
comp[x]=1;
}
}int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i][1]>>a[i][2];
}f[0]=1;
full[0]=1;
comp[0]=1;
dfs(1);
int cnt=0;
for(int i=1;i<=n;i++){
cnt+=comp[i];
}
cout<<cnt;
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 2664
- 时间
- ms
- 内存
- MiB
- 难度
- 3
- 标签
- 递交数
- 88
- 已通过
- 21
- 上传者