前言
二叉树是数据结构中的基础且重要的结构,掌握其遍历与属性计算对理解递归思想至关重要。下面通过两个经典例题,梳理深度计算与序列重构的核心逻辑。
一、二叉树深度
题目描述
给定一棵二叉树,计算其最大深度。参考题目链接:洛谷 P4913 二叉树深度
思路解析
树的深度通常定义为根节点到最远叶子节点的路径长度。对于任意节点,其深度等于左右子树深度的最大值加一。这天然适合用递归来解决:
- 终止条件:如果当前节点为空,返回 0。
- 递归步骤:分别计算左子树和右子树的深度,取较大值后 +1。
参考实现
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6 + 10;
int l[N], r[N]; // 存储左右子节点索引
// 递归计算以 root 为根的子树深度
int dfs(int root) {
if (!root) return 0; // 空节点深度为 0
// 左右子树深度取大者,再加 1(当前层)
return max(dfs(l[root]), dfs(r[root])) + 1;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> l[i] >> r[i];
}
// 假设根节点始终为 1
cout << dfs() << endl;
;
}


