二叉树——3.二叉树的最大深度

力扣题目链接

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

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

题干很简单,就是判断二叉树有几层,我们直接结合完整代码进行分析:

class Solution:
    def maxdepth(self, root: treenode) -> int:
        return self.getdepth(root)
        
    def getdepth(self, node):
        if not node:
            return 0
        leftheight = self.getdepth(node.left) #左
        rightheight = self.getdepth(node.right) #右
        height = 1 + max(leftheight, rightheight) #中
        return height

进入自定义的getdepth函数,如果不存在节点就是0层。

        leftheight = self.getdepth(node.left) #左
        rightheight = self.getdepth(node.right) #右

你可以理解为,先从根节点往下分左右节点,在对左节点分左右节点,直到分到最底层,开始从最底层慢慢+1,不停的递归。比如:

根据leftheight = self.getdepth(node.left),可以一直到最左侧的节点3,3往下没有了为0,那3这一层的高度为1,3往上一层的节点为2,2还有一右节点,符合 rightheight = self.getdepth(node.right),开始对其进行递归,直到最底层,这样不停递归,height = 1 + max(leftheight, rightheight)选取子树中最长的一个加上根节点一层,得到整个树最长的一条路线。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值