給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。
說明: 葉子節點是指沒有子節點的節點。
解題思路
1、使用廣度優先搜尋的方式,記錄從根節點到當前節點的路徑和。
2、使用兩個佇列,分別儲存將要遍歷的節點,以及根節點到這些節點的路徑和。
**
class
solution
:def
haspathsum
(self, root: treenode,
sum:
int)
->
bool:if
not root:
return
false
#建立兩個佇列儲存要遍歷的節點
que_node = collections.deque(
[root]
) que_val = collections.deque(
[root.val]
)#對佇列進行廣度優先搜尋
while que_node:
now = que_node.popleft(
) temp = que_val.popleft(
)#判斷到達終點時目標值是否為路徑和
ifnot now.left and
not now.right:
if temp ==
sum:
return
true
continue
#遍歷當下左子樹時
if now.left:
#遍歷當下右子樹時
if now.right:
return
false
每日一題 路徑總和
題目描述 給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,返回 5,4,11,2 5,8,4,5 思路dfs 前序遍歷 遞迴 用乙個path來存放路徑,每次將當前節點值新增到路徑中...
LeetCode每日一題 路徑總和
題目 給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1 返回 true,因為存在目標和為 22 的根節點到葉子節點的路徑...
每日一題 力扣 計畫
98 驗證二叉搜尋樹 問題給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 1.節點的左子樹只包含小於當前節點的數。2.節點的右子樹只包含大於當前節點的數。3.所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true示例2 輸入 5 1 4...