题目链接:P4913 【深基16.例3】二叉树深度 - 洛谷 | 计算机科学教育新生态
题目难度:普及
解题思路:本题要求树的深度,即求左右子树高度的最大值,首先我们用结构体存树左右节点,然后分别递归地去左右子树的深度。
下面奉上代码部分:
#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;
}