目录
一、题目
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
二、示例
案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7Target = 9
输出: True
案例 2:
输入:
5
/ \
3 6
/ \ \
2 4 7Target = 28
输出: False
三、思路
二叉树的先序遍历,递归过程中类似于两数之和的思路。
四、代码
# 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 findTarget(self, root: TreeNode, k: int) -> bool:
"""
:param root: TreeNode
:param k: int
:return: bool
"""
res = set()
def DFS(node: TreeNode):
if not node:
return False
if node.val in res:
return True
res.add(k - node.val)
return DFS(node.left) or DFS(node.right)
return DFS(root)
if __name__ == '__main__':
tree = TreeNode(5)
tree.left = TreeNode(3)
tree.right = TreeNode(6)
tree.left.left = TreeNode(2)
tree.left.right = TreeNode(4)
tree.right.right = TreeNode(7)
target = 9
s = Solution()
ans = s.findTarget(tree, target)
print(ans)
本文介绍了一种在二叉搜索树中查找是否存在两个节点的值相加等于特定目标值的方法。通过先序遍历结合哈希集合的方式,高效地解决了这一问题,并提供了完整的代码实现。
1139

被折叠的 条评论
为什么被折叠?



