【发布时间】:2021-10-06 17:39:02
【问题描述】:
我有这个功能:
class Solution:
def __init__(self):
self.flag = False
def hasPathSum(self, root: TreeNode, targetSum: int) -> bool:
curr_sum = 0
def dfs(root, curr_sum, target_sum=targetSum):
if self.flag == True:
return True
if root == None:
return 0
print(root.val)
curr_sum += root.val
print(curr_sum)
if curr_sum == target_sum:
self.flag = True
dfs(root.left, curr_sum)
dfs(root.right, curr_sum)
dfs(root, curr_sum, targetSum)
if self.flag == True:
return True
return False
当树的根到叶路径总和等于 target_sum 时,我想结束递归并获得 True。我设法通过添加 dunder 方法 init 并将那里的标志设置为 False 来做到这一点,当满足要求时我会切换它。 但在我看来,它感觉有点不干净也不漂亮。 我应该如何以更干净的方式做到这一点?
【问题讨论】:
-
你通常应该使用
return将信息从一个函数传递给它的调用者(而不是设置一个实例变量),一个递归函数应该return它的递归调用的结果。跨度>
标签: python recursion binary-tree depth-first-search