LeetCode演算法題104 二叉樹的最大深度解析

2021-08-30 17:23:45 字數 1437 閱讀 8323

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

二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明:葉子節點是指沒有子節點的節點。

示例:

給定二叉樹 [3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回它的最大深度 3 。

這個題的解析我講不過官方解答,它有圖—>[link]

至少遞迴法是沒什麼說得了,迭代法的話上網搜了一下,二叉樹的遍歷可以用棧來進行,和遞迴乙個思路,所以還是那句話,全部遍歷一般是用棧的,如果判斷條件,從根到葉中間可以直接出去,用佇列應該效率更高一些。層次遍歷一般用棧遍歷的方法。也有dfs演算法的思想,畢竟是最大深度。(我猜如果是最小深度應該可以用bfs的思想,後面有題可以驗證一下)。

dfs思想就是朝著一條路走到黑,走不通就返回去朝另一條路走到黑,這裡的**是從右邊先一條路走到底,然後往左移。

c++源**:(遞迴法)

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

};

python3源**:(迭代法)

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

maxdepth

(self, root)

:"""

:type root: treenode

:rtype: int

"""stack =

if root!=

none:(

1, root)

) depth =

0while stack!=

: currdepth, root = stack.pop(

)if root!=

none

: depth =

max(currdepth, depth)

(currdepth+

1, root.left)

)(currdepth+

1, root.right)

)return depth

leetcode演算法題第二題 c

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。definition for singly...

LeetCode刷題筆記 104 二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。二叉樹就看看吧,反正過了又忘了 滑稽 這種題就就留的看了。sc思路 當前結點深度等於左右子樹中較大的那個深度加一。class solution 樹中的null值會影響結果。這不...

LeetCode 演算法題

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...