问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

二叉树的最大深度 - LeetCode 热题 37

创作时间:
作者:
@小白创作中心

二叉树的最大深度 - LeetCode 热题 37

引用
CSDN
1.
https://m.blog.csdn.net/Queser_/article/details/137061577

问题描述

给定一个二叉树 root,返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。

示例

示例 1:

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

示例 2:

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

提示

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

解题方法

这道题目是关于二叉树的最大深度,即从根节点到最远叶子节点的最长路径上的节点数。

由于树的结构具有递归性质,树的每一个子树都可以看作是一个独立的树,我们可以将问题分解为子问题,先处理子问题的解,再处理当前问题。

也就是先求出左右子树的最大深度,当前节点的最大深度就很好求了,就是左右子树深度的较大值+1。

  1. 判断根节点是否为空
  • 如果根节点为空,说明当前节点是叶子节点的子节点,返回深度为0。
  1. 递归计算左右子树的深度
  • 递归调用 maxDepth 函数来计算左右子树的深度,得到左子树的深度 l 和右子树的深度 r
  1. 返回当前节点的最大深度
  • 返回左右子树深度的较大值,并加上当前节点的深度1,作为当前节点的最大深度。

代码实现

/**
 * 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;
    }
}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号