以P4913 【深基16.例3】二叉树深度为例.
#include<bits/stdc++.h>
using namespace std;
int n, ans;
struct thing {
int left, right;
} a[1000020];
int dfs(int x) {
if (!x)return 0;
int s = dfs(a[x].left);
int s2 = dfs(a[x].right);
return max(s, s2) + 1;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++)cin >> a[i].left >> a[i].right;
cout<<dfs(1);
return 0;
}