力扣 路徑總和

2022-05-19 18:32:33 字數 1399 閱讀 9093

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。

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

示例: 

給定如下二叉樹,以及目標和sum = 22

5

/ \4 8

/ / \

11 13 4

/ \ \

7 2 1

返回true, 因為存在目標和為 22 的根節點到葉子節點的路徑5->4->11->2

方法1.廣度優先

public

boolean haspathsum(treenode root, int

sum)

//路徑總和

//方法一:廣度優先搜尋

//節點佇列

queuenodequeue = new linkedlist<>();

//節點對應的之前的值的和佇列

queuevaluequeue = new linkedlist<>();

//放到佇列中

nodequeue.offer(root);

valuequeue.offer(root.val);

while(!nodequeue.isempty())

//這裡說明如果中間有某個葉子節點,那麼直接跳過,同時,這裡也會把他之前增加的數量poll掉

continue

; }

//這樣,每一次,

if (now.left != null

)

if (now.right != null

) }

return

false

; }

方法二:遞迴

public

boolean haspathsum(treenode root, int

sum)

//路徑總和

//方法二:遞迴

//假定從根節點到當前節點的值之和為 val,我們可以將這個大問題轉化為乙個小問題:

//是否存在從當前節點的子節點到葉子的路徑,滿足其路徑和為 sum - val

//如果兩個都為空,說明是葉子節點

if (root.left == null && root.right == null

)

//遞迴左節點和右節點

return haspathsum(root.left,sum-root.val) || haspathsum(root.right,sum-root.val);

}

(力扣每日一題)路徑總和

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。解題思路 1 使用廣度優先搜尋的方式,記錄從根節點到當前節點的路徑和。2 使用兩個佇列,分別儲存將要遍歷的節點,以及根節點到這些節點的路徑和。class so...

力扣 437 路徑總和III

參考自 字首和 是指到達當前元素的路徑之前所有元素的和 definition for a binary tree node.class treenode def init self,val 0,left none,right none self.val val self.left left self...

力扣112 路徑總和(遞迴 迭代)

力扣112.路徑總和 遞迴 迭代 給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1 返回 true,因為存在目標和為 2...