# 二叉树最大深度 - 使用递归实现后序遍历求解
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:3
示例 2:
输入:root = [1,null,2]
输出:2
提示:
- 树中节点的数量在
[0, 104]
区间内。 -100 <= Node.val <= 100
# 思路分析:
得到左子树深度,得到右子树深度,二者最大者加一,就是本节点深度
因为需要先得到左右子树深度,很显然是后序遍历典型应用
关于深度的定义:从根出发,离根最远的节点总边数
注意:力扣里的深度定义要多一
# 代码实现:
public int maxDepth(HeroNode root) { | |
// 当前节点为 null 结束当前递归 | |
if(root == null) | |
return 0; | |
// 看当前节点的 左边是否还有节点 (d1 只记录 左边 节点数量) | |
int d1 = maxDepth(root.getLeft()); | |
// 看当前节点的 右边是否还有节点 (d2 只记录 右边 节点数量) | |
int d2 = maxDepth(root.getRight()); | |
// 选择最长的 分支 + 1 = 答案 (最深长度) | |
return Math.max(d1, d2) + 1; | |
} |