广搜代码:
#include<bits/stdc++.h>
using namespace std;
int tree[1000005][2],len;
int bfs(){
int head=0,tail=0,q[len+5][2];
tail++;
q[tail][0]=1;//¸ù
q[tail][1]=1;//Éî¶È
int ans=1;
while(head<tail){
head++;
int n=q[head][0];
int s=q[head][1];
for(int i=0;i<2;i++){
int nn=tree[n][i];
int ns=s+1;
if(nn>0){
tail++;
q[tail][0]=nn;
q[tail][1]=ns;
if(ns>ans) ans=ns;
}
}
}
return ans;
}
int main(){
cin>>len;
for(int i=1;i<=len;i++){
cin>>tree[i][0]>>tree[i][1];
}
cout<<bfs();
return 0;
}
深搜代码
#include<bits/stdc++.h>
using namespace std;
int tree[1000005][2],len,ans=0;
void dfs(int n,int depth){
if(tree[n][0]==0&&tree[n][1]==0){
if(depth>ans) ans=depth;
return;
}
dfs(tree[n][0],depth+1);
dfs(tree[n][1],depth+1);
}
int main(){
cin>>len;
for(int i=1;i<=len;i++){
cin>>tree[i][0]>>tree[i][1];
}
dfs(1,1);
cout<<ans;
return 0;
}