GG BOND无敌题解
2023-07-28 10:53:21
发布于:江苏
38阅读
0回复
0点赞
#include<iostream>
using namespace std;
int n,maxdegree=1; // 最大度
struct node{
int l,r; // 结构体叶节点 左孩子 右孩子
};
node t[1000005];
void vlr(int idx,int degree){ // 函数 idx表起始节点 degree为计数变量
if(t[idx].l == 0 && t[idx].r == 0) maxdegree = max(maxdegree , degree); // 当该节点没有左孩子和右孩子时 该节点表示当前的度 若该度大于当前最大度 该度等于最大度
if(t[idx].l != 0) vlr(t[idx].l,degree+1); // 当该节点还有左孩子时 继续向左计算
if(t[idx].r != 0) vlr(t[idx].r,degree+1); // 当该节点还有右孩子时 继续向右计算
}
int main(){
cin >> n;
for(int i=1;i<=n;i++) cin >> t[i].l >> t[i].r; // 输入
vlr(1,1);
cout << maxdegree << endl; // 输出
return 0;
}
这里空空如也
有帮助,赞一个