【LeetCode 简单题】26-路径总和

声明:

今天是第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

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/82810405
今日推荐