二叉樹(shù)最大最小深度 python solution

網(wǎng)上的答案寫(xiě)法參差不齊,最大、最小深度寫(xiě)法不一。其實(shí)可以找到一個(gè)統(tǒng)一的寫(xiě)法解決最大、最小深度問(wèn)題。九章官方給出lintcode和leetcode的解法有點(diǎn)繁瑣(也可能是我菜,沒(méi)看出其中的奧妙),兩個(gè)else的內(nèi)容有點(diǎn)多余,。下面給出兩個(gè)問(wèn)題的統(tǒng)一寫(xiě)法。

主體思想三種情況分別討論:


主體思想鎮(zhèn)樓

當(dāng)root為空時(shí),返回深度0.
當(dāng)root.left為空時(shí),就在root.right繼續(xù)深度查找
當(dāng)root.right為空時(shí),就在root.left繼續(xù)深度查找
最后返回,root.left 和root.right的深度最大的值+1。

  1. 二叉樹(shù)最大深度:
"""
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. 二叉樹(shù)最小深度:
"""
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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 參考兩篇其他bolg總結(jié)的二叉樹(shù):https://github.com/xy7313/lintcode/blob/...
    暗黑破壞球嘿哈閱讀 2,511評(píng)論 0 1
  • 1 概述 二叉搜索樹(shù),顧名思義,其主要目的用于搜索,它是二叉樹(shù)結(jié)構(gòu)中最基本的一種數(shù)據(jù)結(jié)構(gòu),是后續(xù)理解B樹(shù)、B+樹(shù)、...
    CodingTech閱讀 3,194評(píng)論 5 35
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,899評(píng)論 0 33
  • 概述# 二叉樹(shù)是一種特殊的樹(shù)型結(jié)構(gòu),它由結(jié)點(diǎn)的有限集合構(gòu)成。 二叉樹(shù)是由唯一的起始結(jié)點(diǎn)引出的結(jié)點(diǎn)集合。這個(gè)起始節(jié)點(diǎn)...
    長(zhǎng)胖的魚(yú)閱讀 1,227評(píng)論 0 8
  • 樹(shù)的概述 樹(shù)是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹(shù)與前面介紹的線(xiàn)性表,棧,隊(duì)列等線(xiàn)性結(jié)構(gòu)不同,樹(shù)是一種非線(xiàn)性結(jié)構(gòu) 1.樹(shù)的定...
    Jack921閱讀 4,758評(píng)論 1 31

友情鏈接更多精彩內(nèi)容