二叉树算法实战:深度计算与先序排列求解
二叉树是数据结构中的核心结构之一,掌握其遍历与属性计算是算法进阶的基础。下面通过两道经典题目,演示如何利用递归思想解决深度计算与序列重构问题。
一、二叉树深度
1. 题目描述
给定一棵二叉树的节点编号及左右子节点关系,求该二叉树的最大深度。

2. 算法思路
二叉树的高度定义为根节点到最远叶子节点的路径长度。对于任意节点,其高度等于 1 + max(左子树高度,右子树高度)。因此,这是一个典型的递归场景。
在竞赛编程中,为了节省内存和简化输入处理,常使用数组来存储树的结构(左孩子数组 l,右孩子数组 r),而不是创建复杂的节点对象。这种方式在处理大规模数据时效率更高。
3. 代码实现
#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 = ; i <= n; i++) {
cin >> l[i] >> r[i];
}
cout << () << endl;
;
}




