leet code 给定一个二叉树,找出其最小深度。

给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量
:此处需注意判断边界条件,如果左子树深度、右子树深度均不为0,则用min取其中最小值。
如果有一个为0,取其中非0的数;都为0,取0。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。注意是叶子节点。什么是叶子节点,左右孩子都为空的节点才是叶子节点.

class Solution(object):
    def minDepth(self, root):
        # 1.递归结束条件
        if not root:   return 0
        # 3.本级递归应完成操作
        left_depth = self.minDepth(root.left)
        right_depth = self.minDepth(root.right) 
        # 2.返回值 每个子节点的深度
        if left_depth and right_depth:
            return min (left_depth, right_depth)+1
        if not left_depth and not right_depth:
            return 1
        if  not left_depth or not right_depth:
            return max(left_depth, right_depth)+1


# class Solution:
#     def minDepth(self, root: TreeNode) -> int:
#         if not root : return 0
#         leftDepth = self.minDepth(root.left)
#         rightDepth = self.minDepth(root.right)
#         childDepth = min(leftDepth, rightDepth) if leftDepth and rightDepth else leftDepth or rightDepth
#         return 1 + childDepth
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值