题目链接:https://www.luogu.com.cn/problem/P4913
dfs遍历二叉树的每颗子树,直到遍历到叶子节点后,停下
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
struct node{
int left;
int right;
};
int n, res;
node tree[N];
void dfs(int val, int deep){
if (val == 0) return;//到达叶子节点
res = max(res, deep);
dfs(tree[val].left, deep + 1);
dfs(tree[val].right, deep + 1);
}
int main(){
cin >> n;
for (int i = 1; i <= n; i ++ ) {
int l, r; cin >> l >> r;
tree[i] = {l, r};
}
dfs(1, 1);
cout << res << endl;
return 0;
}