
本章节聚焦算法题实战,系统讲解算法模块。以题带点,通过代码实现帮助大家快速提升代码能力。
一、二叉树深度求解
题目背景
链接:二叉树深度

核心思路
计算二叉树高度其实是个经典的递归场景。直观理解,一棵树的高度等于左右子树高度的最大值再加一(根节点本身)。
这里有个关键点要注意:如果当前节点为空,返回 0 作为基准情况。在递归过程中,我们不需要构建复杂的树结构,直接利用数组存储的左右孩子索引即可遍历。这种基于数组的存储方式在处理完全二叉树或给定父子关系时非常高效。
代码实现
#include <iostream>
using namespace std;
const int N = 1e6 + 10;
int l[N], r[N]; // 分别存储左孩子和右孩子的索引
// 深度优先搜索计算高度
int dfs(int root) {
if (!root) return 0; // 空节点高度为 0
// 递归计算左右子树高度,取最大值并加 1
return max(dfs(l[root]), dfs(r[root])) + 1;
}
int main() {
n;
cin >> n;
( i = ; i <= n; i++)
cin >> l[i] >> r[i];
cout << () << endl;
;
}



