題目分析:
給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明: 葉子節點是指沒有子節點的節點。
示例: 給定如下二叉樹,以及目標和 sum = 22,返回 true, 因爲存在目標和爲 22 的根節點到葉子節點的路徑 5->4->11->2。
解題思路:
- 根節點爲空:返回False
if not root: return False
- 根節點左右節點爲空,且根節點值等於sum,返回True
if not root.left and not root.right and root.val == sum: return True
- 遞歸左右子樹,有一支爲True即可,所以取or
return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)
提交代碼:(遞歸,Runtime: 44 ms, faster than 98.42% )
class Solution:
def hasPathSum(self, root: TreeNode, sum: int) -> bool:
if not root: return False
if not root.left and not root.right and root.val == sum: return True
return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)