112. 路径总和
迭代
class Solution:
def hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
if not root:
return False
qu_node = [root]
qu_val = [root.val]
while qu_node:#node和val一一对应
node = qu_node.pop()
val = qu_val.pop()
if not node.left and not node.right:
if val == targetSum:
return True
if node.left:
qu_node.append(node.left)
qu_val.append(val + node.left.val)
if node.right:
qu_node.append(node.right)
qu_val.append(val + node.right.val)
return False
更简单(函数递归)
class Solution:
def hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
if not root:
return False
if not root.left and not root.right:
return targetSum == root.val
return self.hasPathSum(root.left, targetSum - root.val) or self.hasPathSum(root.right, targetSum - root.val)