一、题目
- 104. 二叉树的最大深度 - 力扣(LeetCode)
给定一个二叉树
root
,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
二、思路
- 二叉树的题目就是递归,怎么递归呢?
- 要求的是最大深度,就是说可以递归的深入树的每一个枝干,每深入到一层就给计数器加一,最后返回最深的那次递归即可;
- 具体到代码中,二叉树有左右两个儿子,左右儿子又有自己的儿子,那递归思路就可以确定为应该利用左右儿子的特性;
- 具体看解法一;
三、解法
解法一
class Solution {public int maxDepth(TreeNode root) {return root == null ? 0 : 1 + Math.max(maxDepth(root.left), maxDepth(root.right));}
}
解析:递归的题解从最深一层递归看起,如代码所示,最深一层递归即为目前的 root 指向某个叶子节点,其左右均为空,再进入一次递归时 root 就为空,返回 0 ,每次返回上一级计数就会加一,最后返回到根节点时,代表的是其左右子树的深度取Max,即为所求;