zoukankan      html  css  js  c++  java
  • LeetCode 111. Minimum Depth of Binary Tree

    原题

    Given a binary tree, find its minimum depth.

    The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

    思路一

    • 类似于求最大深度时的递归思路
    • 不过需要注意的是当某一节点的左子节点(右子节点类似)为空时,不应该参与最小值的比较(否则一定为最小,但是他并不是叶子节点),所以需要返回该节点的右子节点的最小深度

    代码实现

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    # 与求最大深度类似,不过需要注意的是当某一节点左子节点(右子节点类似)有为空的情况时
    # 应该不参与最小值的比较,需要返回该节点的右子节点的最小深度
    # 这里通过返回right + left + 1简化上述思路
    class Solution(object):
        def minDepth(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            return self.helper(root)
            
        def helper(self, node):
            if node == None:
                return 0
            left = self.helper(node.left)
            right = self.helper(node.right)
            return min(right, left) + 1 if (right and left) else right + left + 1
    

      

    思路二

    • 采用正向计数的递归思想

    代码实现

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
            
            
    # 正向计数递归        
    class Solution(object):
        def minDepth(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            return self.dfs(root,0)
            
        def dfs(self,x,level):
            if x==None:return level
            if x.left==None and x.right==None:return level+1
            if x.left!=None and x.right==None:return self.dfs(x.left,level+1)
            if x.left==None and x.right!=None:return self.dfs(x.right,level+1)
            return min(self.dfs(x.left,level+1),self.dfs(x.right,level+1))
    

      

  • 相关阅读:
    实习第2天
    转:JavaScript事件冒泡简介及应用
    icon font字体图标字库汇总
    Express4--说明
    图标字体的使用
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    【转】 Mybatis/Ibatis,数据库操作的返回值
    spring+quartz报错:Table 'BANKSTEELERP_OLD.QRTZ_TRIGGERS' doesn't exist
    【转】mysql 触发器实现两个表的数据同步
    【转】Linux中如何安装.rpm、.tar、.tar.gz和tar.bz2
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/6862378.html
Copyright © 2011-2022 走看看