美文网首页
二叉树最大最小深度 python solution

二叉树最大最小深度 python solution

作者: fighting41love | 来源:发表于2017-09-24 16:03 被阅读451次

    网上的答案写法参差不齐,最大、最小深度写法不一。其实可以找到一个统一的写法解决最大、最小深度问题。九章官方给出lintcode和leetcode的解法有点繁琐(也可能是我菜,没看出其中的奥妙),两个else的内容有点多余,。下面给出两个问题的统一写法。

    主体思想三种情况分别讨论:


    主体思想镇楼

    当root为空时,返回深度0.
    当root.left为空时,就在root.right继续深度查找
    当root.right为空时,就在root.left继续深度查找
    最后返回,root.left 和root.right的深度最大的值+1。

    1. 二叉树最大深度:
    """
    Definition of TreeNode:
    class TreeNode:
        def __init__(self, val):
            self.val = val
            self.left, self.right = None, None
    """
    class Solution:
        """
        @param root: The root of binary tree.
        @return: An integer
        """ 
        def maxDepth(self, root):
    
    
            if root is None:
                return 0   
            
            if root.left == None:
                return self.maxDepth(root.right) + 1
            if root.right == None:
                return self.maxDepth(root.left) + 1
                
            return max(self.maxDepth(root.left), self.maxDepth(root.right))+1
    
    1. 二叉树最小深度:
    """
    Definition of TreeNode:
    class TreeNode:
        def __init__(self, val):
            self.val = val
            self.left, self.right = None, None
    """
    
    
    class Solution:
        """
        @param: root: The root of binary tree
        @return: An integer
        """
        def minDepth(self, root):
            # write your code here
      
            
           
            if root is None:
                return 0   
            
            if root.left == None:
                return self.minDepth(root.right) + 1
            if root.right == None:
                return self.minDepth(root.left) + 1
                
            return min(self.minDepth(root.left),self.minDepth(root.right))+1
    

    相关文章

      网友评论

          本文标题:二叉树最大最小深度 python solution

          本文链接:https://www.haomeiwen.com/subject/eswkextx.html