前言
本文聚焦于二叉树的两个经典操作:计算树的最大深度,以及根据中序和后序遍历序列还原先序遍历。这两个问题都深刻体现了递归思想在树形结构处理中的核心作用。
二叉树深度
题目描述
给定一棵二叉树,求其最大深度(高度)。
核心思路
二叉树的高度定义为根节点到最远叶子节点的最长路径上的节点数。递归公式非常直观:
Height(root) = 1 + max(Height(left), Height(right))
若节点为空,高度为 0。通过 DFS 遍历整棵树即可得出结果。
代码实现
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6 + 10;
int l[N], r[N]; // 存储左右子节点索引
// 递归计算深度
int dfs(int root) {
if (!root) return 0;
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(1) << endl;
return 0;
}


