题解:P4913 【深基16.例3】二叉树深度

· · 题解

这应该是最短的题解吧\ 思路全在代码里了\ (本蒟蒻的第一篇题解,求通过)

//Luogu Problems - P4913
#include<iostream>
using namespace std;
const int MAXN = 1e6 * 10;  //最大大小
struct Tree {  //二叉树结点
    int left, right;
} tree[MAXN];
int n;
int dfs(int x) {  //稍微遍历一下
    if (!x) return 0;
    return max(dfs(tree[x].left), dfs(tree[x].right)) + 1;  //分别把每一个节点看成一个子树,然后用递归遍历出一颗树的深度,然后向上递推分别判断哪一棵子树的深度最大然后取它的+1的值
}
int main() {
    cin >> n;  //不用说了吧。。。
    for (int i = 1; i <= n; i++) cin >> tree[i].left >> tree[i].right;
    cout << dfs(1) << endl;
    return 0;  //完结撒花
}