zoukankan      html  css  js  c++  java
  • 111.二叉树的最小深度

    class TreeNode:
    def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None

    root1 = TreeNode(1)
    root2 = TreeNode(2)
    root1.left = root2
    # 这道题也是递归的想法,遍历每个子树,跟上一题的方法一样
    class Solution:
    def minDepth(self, root: TreeNode) -> int:
    return self.dfs(root)
    def dfs(self,root):
    # 首先判断根节点是否为None
    if not root : return 0
    # 分别求出左子树和右子树的最小路径
    left = self.dfs(root.left)
    right = self.dfs(root.right)
    # 注意这里一定要加判断的原因
    # 是因为,当左节点或者右节点为空的时候不能算在路径里边
    if left == 0 and right != 0:
    return right + 1
    elif left != 0 and right == 0:
    return left + 1
    # 返回左子树和右子树中最小的路径,当然,还要加上根节点。
    return min(left,right) + 1
    a = Solution()
    print(a.minDepth(root1))
  • 相关阅读:
    失格
    救赎
    篝火晚会
    旅行家的预算
    荒诞
    mod
    clique
    序列
    [CF932E]Team Work & [BZOJ5093]图的价值
    NOIWC2018游记
  • 原文地址:https://www.cnblogs.com/cong12586/p/13137847.html
Copyright © 2011-2022 走看看