二叉树的最大深度-力扣
一、核心思路
计算二叉树的最大深度,本质是求从根节点到最远叶子节点的路径上的节点总数。无论采用哪种方法,核心逻辑都是逐层(或递归)探索树的结构,记录最深路径的长度。

二、两种实现方法的原理
1. 递归法(深度优先搜索,DFS)
原理:
利用二叉树的递归定义(每个节点的左、右子树仍是二叉树),通过 “自底向上” 的方式计算深度:
若当前节点为空(NULL),深度为 0(递归终止条件)。
若当前节点非空,其深度 = 1(当前节点本身) + 左子树深度与右子树深度的最大值。
递归计算左、右子树的深度,最终返回根节点的深度(即整棵树的最大深度)。
2. 迭代法(广度优先搜索,BFS)
原理:
利用队列实现层序遍历,通过 “自上而下” 的方式记录层数(每一层对应一个深度):
初始化队列,将根节点入队。
循环处理每一层节点:统计当前层的节点数,依次出队并将其左、右子节点入队(下一层节点),每处理完一层,深度加 1。
当队列为空时,遍历结束,此时的深度即为最大深度。
三、两种方法的优点
1. 递归法(DFS)
代码简洁:逻辑直观,只需几行代码即可实现,无需额外数据结构(如队列)。
符合二叉树特性:直接利用二叉树的递归结构,思路与树的定义高度契合,容易理解。
2. 迭代法(BFS)
避免栈溢出:递归法在树深度极大时(如链式树)可能导致递归调用栈溢出,而迭代法使用队列,栈空间稳定。
可扩展性:层序遍历的思路可直接应用于其他 “按层处理” 的问题(如打印每层节点),适应性更强。
总结
递归法适合树深度较小的场景,代码简洁易实现;
迭代法适合树深度较大的场景,稳定性更高,且可复用层序遍历逻辑。
两种方法的时间复杂度均为 O(n)(n 为节点数),空间复杂度分别为 O(h)(h 为树深度,递归栈)和 O(n)(队列存储节点)。
