
题目
使用广度优先搜索的方式,记录从根节点到当前节点的路径和。
使用两个队列,分别存储将要遍历的节点,以及根节点到这些节点的路径和即可。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def hasPathSum(self, root: TreeNode, sum: int) -> bool:
if root==None:
return False
nodestack = [root]
sumstack = [root.val]
while nodestack:
p = nodestack.pop(0)
cursum = sumstack.pop(0)
if p.left:
cur_left_sum = cursum + p.left.val
nodestack.append(p.left)
sumstack.append(cur_left_sum)
if p.right:
cur_right_sum = cursum + p.right.val
nodestack.append(p.right)
sumstack.append(cur_right_sum)
if not p.left and not p.right:
if cursum==sum:
return True
return False