ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

力扣 104题 二叉树的最大深度 个人题解

2022-02-26 18:00:25  阅读:93  来源: 互联网

标签:right 题解 力扣 二叉树 深度 root 节点 left


先看题目:

给定一个二叉树,找出其最大深度。

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

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

       3
      / \
    9  20
   / \
15 7
返回它的最大深度 3 。

我们可以分析一下,要找的是最大深度,以根节点为例,3就是根节点,深度为1,9和20都是子节点,深度为2,最后的15和7是叶子节点,深度为3。

思考一个问题:可不可以从root根节点出发,找他下一层的子树是否为叶子节点?然后依次递推,如果不是叶子节点就继续向下遍历,直到遇到叶子节点为止。每往下一层就会产生当前一层的深度。

又有一个问题,二叉树遍历会有root.left和root.right两个方向的遍历,那我们应该做什么?就是遍历完了之后求出左边和右边的最大值,这个题就做出来了。

其实这种思路有一个很有趣的地方:即最后的问题分解为了一个个的子问题。这也就是后面动态规划的思想。最后子问题求解完,我们要的问题就自然求解出来了。

上代码:

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) {
            return 0;
        } else {
            int left = maxDepth(root.left);
            int right = maxDepth(root.right);
            return Math.max(left, right) + 1;
        }
    }
}

  最后return那里的+1其实就是每一层当前的深度+1,就是他这里本来的深度。这样,你会发现这个问题就解决了。

标签:right,题解,力扣,二叉树,深度,root,节点,left
来源: https://www.cnblogs.com/skywxp/p/15940017.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有