📅  最后修改于: 2023-12-03 14:58:22.771000             🧑  作者: Mango
这是一道关于二叉搜索树的问题。我们需要判断两个节点之间是否有路径和等于给定值的路径。以下是一个解决该问题的Python代码示例:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: bool
"""
if not root:
return False
def dfs(node, current_sum):
if not node:
return False
if not node.left and not node.right:
if current_sum + node.val == sum:
return True
else:
return False
left = dfs(node.left, current_sum + node.val)
right = dfs(node.right, current_sum + node.val)
return left or right
return dfs(root, 0)
该代码定义了一个Solution类,包含一个名为pathSum
的函数,该函数接受一个二叉树的根节点和一个正整数sum,返回一个布尔值,表示是否存在一条从根节点到叶子节点的路径,使得路径上所有节点的和等于sum。
该函数使用深度优先搜索(DFS)的方法实现。每次递归访问一个节点,累计该节点的值,并检查其是否为叶子节点。如果是,则检查累计和是否等于sum,如果是,则返回True,否则返回False。如果不是叶子节点,则递归访问其左右子节点,并将累计和传递给它们。如果左右子节点任意一个返回True,则说明存在一条路径满足条件,返回True;否则返回False。
该函数的时间复杂度和空间复杂度都是O(n),其中n是树中节点的数量。