题目中给的是输入是按照前序的,如果能看出来这个应该比较好做。
#include<bits/stdc++.h> using namespace std; struct Node{ int l,r; }tree[int(1e6+10)]; int ans=0; void dfs(int now,int h){ if(tree[now].l==0 && tree[now].r==0){ans=max(ans,h);return;} dfs(tree[now].l,h+1); dfs(tree[now].r,h+1); } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin>>n; for(int i=1;i<=n;i++){ cin>>tree[i].l>>tree[i].r; } dfs(1,1); cout<<ans<<endl; return 0; }