給定乙個二叉樹,找出其最大深度。
二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。
說明:葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [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 ...