class TreeNode:
def __init__(self,x):
self.val=x
self.left=None
self.right=None
class Solution:
def hasPathSum(self,root,sum):
if root is None:
return False
if sum == root.val and root.left is None and root.right is None:
return True
return self.hasPathSum(root.left,sum-root.val) or self.hasPathSum(root.right,sum-root.val)
-
TreeNode
类:- 这个类定义了二叉树的一个节点,包含三个属性:
val
:存储节点的值。left
:指向该节点左子节点的引用。right
:指向该节点右子节点的引用。
__init__
方法是TreeNode
类的构造函数,用于初始化节点的值以及其左右子节点。默认情况下,左右子节点被初始化为None
,表示没有子节点。
- 这个类定义了二叉树的一个节点,包含三个属性:
-
Solution
类:- 这个类中定义了一个方法
hasPathSum
,它接受两个参数:root
:表示二叉树的根节点。sum
:表示期望的路径和。
hasPathSum
方法首先检查根节点是否为空,如果是,则返回False
,因为没有路径可以遍历。- 如果当前节点是叶子节点(即
root.left
和root.right
都为None
),并且当前节点的值等于sum
,则返回True
,表示找到了一个和为sum
的路径。 - 如果当前节点不是叶子节点,方法会递归地调用自身,分别在左子树和右子树上搜索满足条件的路径。路径的当前和需要减去当前节点的值,因为我们要找到从根节点到叶子节点的路径和。
- 最后,方法返回两个递归调用的逻辑或(
or
)结果。如果任一递归调用返回True
,则表示存在满足条件的路径,方法返回True
;否则返回False
。
- 这个类中定义了一个方法
这个hasPathSum
方法使用了深度优先搜索(DFS)策略来遍历二叉树。它是一种高效的路径搜索方法,可以确保每个可能的路径都被检查过。这种方法特别适用于树形结构的路径问题,因为它可以很容易地跟踪路径上的节点,并在必要时回溯到上一个节点继续搜索。