給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明: 葉子節點是指沒有子節點的節點。
示例: 給定如下二叉樹 [5,4,8,11,null,13,4,7,2,null,null,null,1],以及目標和 sum = 22
返回true
, 因為存在目標和為 22 的根節點到葉子節點的路徑5->4->11->2
。
相關題目
dfs-104. 二叉樹的最大深度
fs-111. 二叉樹的最小深度
# definition for a binary tree node.
class treenode(object):
def __init__(self, x):
self.val = x
self.left = none
self.right = none
class solution(object):
def haspathsum(self, root, sum):
""":type root: treenode
:type sum: int
:rtype: bool
"""if root == none:
return false
return self.helper(root, sum)
def helper(self, root, sum):
# 判斷 root 是否為葉子節點
# 到達葉子節點:判斷節點的左右子樹同時為空
if root.left == none and root.right == none:
return root.val == sum # 判斷是否達到sum
# 左孩子為null
if root.left == none:
return self.helper(root.right, sum - root.val)
# 右孩子為null
if root.right == none:
return self.helper(root.left, sum - root.val)
return self.helper(root.left, sum - root.val) or self.helper(root.right, sum - root.val)
其他解法
dfs、回溯、bfs(佇列)、棧
solution/lu-jing-zong-he-de-si-chong-jie-fa-dfs-hui-su-bfs-/
LeetCode112 路徑總和
給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 48 1113 4 721返回true,因為存在目標和為 22 的根節點到葉子節點的路徑5 4 11 2。遍...
LeetCode 112 路徑總和
給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1 返回 true,因為存在目標和為 22 的根節點到葉子節點的路徑 5 ...
Leetcode 112 路徑總和
給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和sum 22,5 48 1113 4 721 返回true,因為存在目標和為 22 的根節點到葉子節點的路徑5 4 11 2。...