力扣(leetcode) 104.二叉树的最大深度 (详细步骤分解递归)

题目在这:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

思路分析:

找二叉树的最大深度,用递归比较好理解也比较好想。遍历左子树,遍历右子树。回退的时候记得加1。
递归出口:当前指针为null。

在这里插入图片描述
用上面的这个图来做个例子说明一下。
其中一个左子树递归到最后肯定是指针指向了8。
1.8的左孩子为null,所以回退到8这个节点。
2. 8的右孩子也为null,所以回退到8这个节点。
3. 而8的左右都是null所以为0。而此时从左右为空回退到了8,所以此时深度+1。
即 max(左子树,右子树) + 1
4.同理7的深度也是标记为1。
5. 所以 回退到3 的时候 选8和7之间深度最大的再加1 。这时候3的深度标记为2。
6. 同理,右子树的4深度也标记为2.
7. 递归回退到2。2的左子树3,和2右子树4,的深度标记都为2,所以选则左右子树中较大的深度标记数加一,就是3。
即该数最大深度为3.

有了上述分析帮助理解,递归代码就很好写。

完整代码

def getDepth(node: TreeNode):
    if not node:
        return 0
    left_depth = getDepth(node.left)
    right_depth = getDepth(node.right)
    depth = 1 + max(left_depth, right_depth)
    return depth
return getDepth(root)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不学习!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值