二叉树的最大深度

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

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

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

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

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3

思路:

  涉及到二叉树问题,基本上都是用递归的方式来做。这里我们也是用递归的方式来求二叉树的深度。

  递归的一大要点就是:不要带入到递归当中,不要跟着函数一层一层地套进去

  人的大脑并非计算机,这种事情我们得交给计算机来做,我们定义递归只需要明确两点:输入的是什么以及输出的是什么就好了。

  比如对于这一题,我们要定义一个递归函数,我们就明确定义函数maxDepth(),输入就是我们二叉树的根节点,输出则是我们二叉树的深度。以后我们就知道:我们一旦想求任何一个二叉树的深度,我们只需给这个函数传入根节点,就可以得到输出深度,至于中间是怎么进行计算的我不用去想。我们唯一要想清楚的就是最后一层(base case)如何处理

  对于一棵二叉树,它的最大深度就等于max(它左子树的深度,右子树深度)+1。而左子树深度只需要再次把左节点送入maxDepth()函数即可,右子树同理。再在函数开始定义我们的base case:一旦节点为空,证明到底了,返回0。

代码:

class Solution(object):
    def maxDepth(self, root):
        if not root:return 0#base case
        #将左右节点送入递归
        return max(self.maxDepth(root.left)+1,self.maxDepth(root.right)+1)

小结:

  从宏观来看这段代码,我们不需要跳进任何一个maxDepth函数,我们传入了最初的根节点root,通过一个叫做maxdepth的函数得到了它的左节点和右节点的深度,我们选取了其中最大的那个深度加上它自己(1),就得到了这个节点的最大深度了。只看第一层代码,整个过程就看起来十分简单清晰了。

posted @   JunanP  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示