声明:
今天是第26道题。给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除
(手动比心ღ( ´・ᴗ・` ))
正文
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和sum = 22
,5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
返回
true
, 因为存在目标和为 22 的根节点到叶子节点的路径5->4->11->2
。
解法1。递归的方法。自顶向下,如果对递归有很深的认识的话,就只要用sum逐层减去当前层遍历的节点值,直到根节点,如果根节点的值等于最后减完前面n-1层节点的值,则说明此条路径符合要求,代码如下。
class Solution:
def hasPathSum(self, root, sum):
if root is None:
return False
elif root.val == sum and root.left is None and root.right is None:
return True
else:
return self.hasPathSum(root.left, sum-root.val) and self.hasPathSum(root.right, sum-root.val)
结尾
解法1:https://blog.csdn.net/qq_34364995/article/details/80427240