[LeetCode]Maximum Depth of Binary Tree

本文介绍了一种求解二叉树最大深度的算法,并通过递归的方式实现了该算法。通过对任意节点的左子树和右子树进行深度计算,最终得出整棵树的最大深度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

For example:
Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

return its depth = 3.

思路:本题要求的是二叉树的深度,容易想到的是需要进行递归遍历,问题在于递归出口和循环体,一般来说出口应该是容易找到的,只要节点为NULL即为出口,循环体是一个值得讨论的问题。我们可以以任意节点为准则,求出此节点的左树和右树的深度由于向上递归,最后可以求得根节点左树与右树的深度值,再选取其中较大值作为结果返回。值得注意的是任意节点的深度值为1+左右深度最大值。

python知识:python三元计算符:实现类似于a:a>b?b的功能为:a if a>b else b值得注意的是这个三元运算符的优先级较低,在与加法进行运算时会先运算加法如:1+a if a>b else b 则会先计算1+a所以要括号括起来。

max()函数求两数较大值。

代码:

class Solution:
    def maxDepth(self, root):
        if not root: return 0
        depthl=self.maxDepth(root.left)
        depthr=self.maxDepth(root.right)
        return 1 + (depthl if depthl>depthr else depthr)

使用max()的一行代码:

class Solution:
    def maxDepth(self, root):
        if not root: return 0
        return 1+max(self.maxDepth(root.left),self.maxDepth(root.right))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值