rt,我用define写了一个max
#define max(a,b) (((a)>(b))?(a):(b))
完整代码:
#include<stdio.h>
#define max(a,b) (((a)>(b))?(a):(b))
struct node{
int l,r;
}a[100010];
int n;
int dfs(int i){
if(i==0){
return 0;
}
return max(dfs(a[i].l),dfs(a[i].r))+1;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].l,&a[i].r);
}
printf("%d",dfs(1));
return 0;
}
TLE了
换成函数:
#include<stdio.h>
int max(int a,int b){
return (a>b)?a:b;
}
struct node{
int l,r;
}a[100010];
int n;
int dfs(int i){
if(i==0){
return 0;
}
return max(dfs(a[i].l),dfs(a[i].r))+1;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].l,&a[i].r);
}
printf("%d",dfs(1));
return 0;
}
AC了,请问这是什么原因