二叉树深度计算与先序排列求解实战
一、二叉树深度
题目描述
给定一棵二叉树的节点数及左右子节点关系,求树的最大深度。 参考题目:洛谷 P4913 二叉树深度
思路解析
计算树高是递归最经典的场景之一。对于任意节点,其高度等于左右子树高度的最大值加一。如果当前节点为空,高度为 0。
这里我们使用数组模拟树结构,l[i] 和 r[i] 分别存储节点 i 的左、右孩子编号。
代码实现
#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;
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];
}
cout << dfs(1) << endl;
return 0;
}
注意输入是从 1 开始计数的,根节点默认为 1。
二、求先序排列
题目描述
已知一棵二叉树的中序遍历和后序遍历序列,求其先序遍历序列。 参考题目:


