题目链接 :P4913 【深基16.例3】二叉树深度 - 洛谷 | 计算机科学教育新生态
题目难度 :普及
解题思路:本题要求树的深度,即求左右子树高度的最大值,首先我们用结构体存树左右节点,然后分别递归地去左右子树的深度。
下面奉上代码部分:
cpp
#include<bits/stdc++.h> // 万能头文件
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;
int n;
int ans;
struct node
{
int left,right;
}tree[N];
void dfs(int id,int deep)
{
if(id == 0) return;//到达叶子节点
ans = max(ans,deep);
dfs(tree[id].left,deep + 1);//递归求左子树的深度
dfs(tree[id].right,deep + 1);//递归求右子树的深度
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n;
for(int i=1; i<=n; i++) cin >> tree[i].left >> tree[i].right;
dfs(1,1);
cout << ans << '\n';
return 0;
}