# 二叉树最大深度 - 使用递归实现后序遍历求解

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

img

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

# 思路分析:

  1. 得到左子树深度,得到右子树深度,二者最大者加一,就是本节点深度

  2. 因为需要先得到左右子树深度,很显然是后序遍历典型应用

  3. 关于深度的定义:从根出发,离根最远的节点总边数

    注意:力扣里的深度定义要多一

# 代码实现:

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;
}