国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python版day16

這篇具有很好參考價值的文章主要介紹了Python版day16。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

104. 二叉樹的最大深度

給定一個二叉樹,找出其最大深度。

二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。

說明:?葉子節(jié)點(diǎn)是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        left = self.maxDepth(root.left)
        right = self.maxDepth(root.right)
        return max(left,right) + 1

111. 二叉樹的最小深度

給定一個二叉樹,找出其最小深度。

最小深度是從根節(jié)點(diǎn)到最近葉子節(jié)點(diǎn)的最短路徑上的節(jié)點(diǎn)數(shù)量。

說明:葉子節(jié)點(diǎn)是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def minDepth(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        left = self.minDepth(root.left)
        right = self.minDepth(root.right)
        if not root.left and root.right:
            return 1+right
        if not root.right and root.left:
            return 1+left
        return min(left,right)+1

?要注意:葉子節(jié)點(diǎn)是指沒有左右子節(jié)點(diǎn)的節(jié)點(diǎn)。那么就不能無腦return min(left,right)+1 因?yàn)槿绻筮吺强沼疫叢皇强漳敲磿苯臃祷?而不是右邊的長度

222. 完全二叉樹的節(jié)點(diǎn)個數(shù)

給你一棵 完全二叉樹 的根節(jié)點(diǎn) root ,求出該樹的節(jié)點(diǎn)個數(shù)。

完全二叉樹 的定義如下:在完全二叉樹中,除了最底層節(jié)點(diǎn)可能沒填滿外,其余每層節(jié)點(diǎn)數(shù)都達(dá)到最大值,并且最下面一層的節(jié)點(diǎn)都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1~?2h?個節(jié)點(diǎn)。

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/count-complete-tree-nodes
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

暴力解法

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def countNodes(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        res = []
        queue = deque()
        queue.append(root)
        while queue:
            size = len(queue)
            for i in range(0, size):
                node = queue.popleft()
                res.append(node)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
        return len(res)

普通二叉樹寫法 遞歸 臥槽比循環(huán)還慢!

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def countNodes(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        left = self.countNodes(root.left)
        right = self.countNodes(root.right)
        return 1+left+right

完全二叉樹寫法 遞歸?更tm慢了文章來源地址http://www.zghlxwxcb.cn/news/detail-485421.html

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def countNodes(self, root: Optional[TreeNode]) -> int:
        if not root: 
            return 0
        count = 1
        left = root.left
        right = root.right
        while left and right:
            count +=1
            left = left.left
            right = right.right
        if not left and not right: # 如果同時到底說明是滿二叉樹
            return 2**count-1
        return 1+self.countNodes(root.left)+self.countNodes(root.right)

到了這里,關(guān)于Python版day16的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 給定一個整數(shù)數(shù)組 nums 和一個整數(shù)目標(biāo)值 target,請你在該數(shù)組中找出 和為目標(biāo)值 target 的那兩個整數(shù),并返回它們的數(shù)組下標(biāo)。(哈希法)

    給定一個整數(shù)數(shù)組 nums 和一個整數(shù)目標(biāo)值 target,請你在該數(shù)組中找出 和為目標(biāo)值 target 的那兩個整數(shù),并返回它們的數(shù)組下標(biāo)。(哈希法)

    思路: 當(dāng)題意中需要判斷某個元素是否出現(xiàn)過,或者某個元素是否在這個集合里出現(xiàn)過。 給定一個整數(shù)數(shù)組 nums?和一個整數(shù)目標(biāo)值 target,請你在該數(shù)組中找出 和為目標(biāo)值 target??的那兩個整數(shù),并返回它們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,數(shù)組

    2024年02月08日
    瀏覽(97)
  • 有一個 3*4 的矩陣,找出其中值最大的元素,及其行列號

    有一個 3*4 的矩陣,找出其中值最大的元素,及其行列號

    首先學(xué)會輸入二維數(shù)組;然后知道如何比較求最大值;最后就是格式問題; 3運(yùn)行代碼: 4總結(jié): 感謝各位的閱讀,以上就是“C語言怎么有一個 3*4 的矩陣,找出其中值最大的元素,及其行列號”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C語言這一問題有了更深刻的體會,具

    2024年02月04日
    瀏覽(22)
  • 給定一個 5×5 的矩陣,每行只有一個最大值,每列只有一個最小值,尋找這個矩陣的鞍點(diǎn)。鞍點(diǎn)指的是矩陣中的一個元素,它是所在行的最大值,并且是所在列的最小值。

    給定一個 5×5 的矩陣,每行只有一個最大值,每列只有一個最小值,尋找這個矩陣的鞍點(diǎn)。鞍點(diǎn)指的是矩陣中的一個元素,它是所在行的最大值,并且是所在列的最小值。

    ?遍歷數(shù)組,將數(shù)組內(nèi)的元素與ma x進(jìn)行對比并儲存最大值和坐標(biāo)值。 ? 列的實(shí)現(xiàn)與行的類似 ?打印鞍點(diǎn)及其坐標(biāo) ?

    2024年02月03日
    瀏覽(27)
  • Leetcoder Day16| 二叉樹 part05

    Leetcoder Day16| 二叉樹 part05

    語言:Java/C++? 給定一個二叉樹的? 根節(jié)點(diǎn) ? root ,請找出該二叉樹的? 最底層?最左邊? 節(jié)點(diǎn)的值。 假設(shè)二叉樹中至少有一個節(jié)點(diǎn)。 示例 1: 示例 2: 本題需要滿足兩個條件:(1) 最后一行的 (2) 最左邊的值 。 這里需要明白一個概念是,最左邊的值未必就是左孩子,右孩

    2024年02月21日
    瀏覽(18)
  • 【力扣 - 二叉樹的最大深度】

    【力扣 - 二叉樹的最大深度】

    給定一個二叉樹 root ,返回其最大深度。 二叉樹的 最大深度 是指從根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。 樹中節(jié)點(diǎn)的數(shù)量在 [0, 10^4] 區(qū)間內(nèi)。 如果我們知道了左子樹和右子樹的最大深度 l 和 r ,那么該二叉樹的最大深度即為 而左子樹和右子樹的最大深度又可以以

    2024年02月21日
    瀏覽(25)
  • leecode104——二叉樹的最大深度

    左子樹與右子樹的最大深度可以通過遞歸遍歷(深度優(yōu)先搜索)得到,首先: 遞歸三部曲:(1)確定遞歸的參數(shù)和返回值,因?yàn)橐容^的是左右子樹的最大深度,所以每次傳入的根節(jié)點(diǎn),返回最大深度,即int類型的數(shù)字 (2)遞歸的終止條件:當(dāng)跟節(jié)點(diǎn)為空,說明高度為0或

    2024年02月03日
    瀏覽(23)
  • 【LeetCode】104.二叉樹的最大深度

    給定一個二叉樹,找出其最大深度。 二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。 說明: ?葉子節(jié)點(diǎn)是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)。 示例: 給定二叉樹? [3,9,20,null,null,15,7] , 返回它的最大深度?3 。 我一開始是想通過深度優(yōu)先搜索,每次到達(dá)子節(jié)點(diǎn)都更新一下當(dāng)

    2024年02月15日
    瀏覽(27)
  • leetcode 104——二叉樹的最大深度

    leetcode 104——二叉樹的最大深度

    給定一個二叉樹,找出其最大深度。 二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的節(jié)點(diǎn)數(shù)。 說明: 葉子節(jié)點(diǎn)是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)。 leetcode104 在解決樹相關(guān)的問題時,一定要考慮能不能使用遞歸解決,如果使用遞歸解決,問題一般都能變得很簡單,詳情請看代碼。

    2024年02月03日
    瀏覽(25)
  • 二叉樹OJ題:LeetCode--104.二叉樹的最大深度

    二叉樹OJ題:LeetCode--104.二叉樹的最大深度

    朋友們、伙計們,我們又見面了,本期來給大家解讀一下LeetCode中第104道二叉樹OJ題,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! 數(shù)據(jù)結(jié)構(gòu)與算法專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 個? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 ?Leet

    2024年02月11日
    瀏覽(21)
  • 64. 最小路徑和:給定一個包含非負(fù)整數(shù)的 m x n 網(wǎng)格 grid ,請找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。 說明:每次只能向下或者向右移動一步。

    64. 最小路徑和:給定一個包含非負(fù)整數(shù)的 m x n 網(wǎng)格 grid ,請找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。 說明:每次只能向下或者向右移動一步。

    給定一個包含非負(fù)整數(shù)的 m x n 網(wǎng)格 grid ,請找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。 說明:每次只能向下或者向右移動一步。 使用動態(tài)規(guī)劃的方法解決: 路徑的方向只能是向下或向右 網(wǎng)格的第一行 的每個元素只能從左上角元素開始向右移動到達(dá)

    2024年02月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包