diff --git a/problems/0112.路径总和.md b/problems/0112.路径总和.md index ecbefd90..e11384da 100644 --- a/problems/0112.路径总和.md +++ b/problems/0112.路径总和.md @@ -348,8 +348,32 @@ class Solution { ``` Python: - - +```python +// 递归法 +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def hasPathSum(self, root: TreeNode, targetSum: int) -> bool: + def isornot(root,targetSum)->bool: + if (not root.left) and (not root.right) and targetSum == 0:return True // 遇到叶子节点,并且计数为0 + if (not root.left) and (not root.right):return False //遇到叶子节点,计数不为0 + if root.left: + targetSum -= root.left.val //只有左节点 + if isornot(root.left,targetSum):return True //递归,处理节点 + targetSum += root.left.val //回溯 + if root.right: + targetSum -= root.right.val //只有右节点 + if isornot(root.right,targetSum):return True //递归,处理右节点 + targetSum += root.right.val //回溯 + return False + + if root == None:return False //别忘记处理空TreeNode + else:return isornot(root,targetSum-root.val) +``` Go: JavaScript: @@ -427,4 +451,4 @@ let pathSum = function (root, targetSum) { * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw) * B站视频:[代码随想录](https://space.bilibili.com/525438321) * 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ) -