大家好!我是曾续缘😛
今天是《LeetCode 热题 100》系列
发车第 37 天
二叉树第 2 题
❤️点赞 👍 收藏 ⭐再看,养成习惯
二叉树的最大深度 给定一个二叉树
root
,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3示例 2:
输入:root = [1,null,2] 输出:2提示:
难度:❤️
- 树中节点的数量在
[0, 104]
区间内。-100 <= Node.val <= 100
解题方法
这道题目是关于二叉树的最大深度,即从根节点到最远叶子节点的最长路径上的节点数。
由于树的结构具有递归性质,树的每一个子树都可以看作是一个独立的树,我们可以将问题分解为子问题,先处理子问题的解,再处理当前问题。
也就是先求出左右子树的最大深度,当前节点的最大深度就很好求了,就是左右子树深度的较大值+1。
-
判断根节点是否为空
如果根节点为空,说明当前节点是叶子节点的子节点,返回深度为0。
-
递归计算左右子树的深度
递归调用
maxDepth
函数来计算左右子树的深度,得到左子树的深度l
和右子树的深度r
。 -
返回当前节点的最大深度
返回左右子树深度的较大值,并加上当前节点的深度1,作为当前节点的最大深度。
Code
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
if(root == null){
return 0;
}
int l = maxDepth(root.left);
int r = maxDepth(root.right);
return Math.max(l, r) + 1;
}
}