二叉树最大最小深度 python solution

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

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


二叉树最大最小深度 python solution_第1张图片
主体思想镇楼

当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)