【题目】
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入:
5
/
3 6
/ \
2 4 7
Target = 9
输出: True
案例 2:
输入:
5
/
3 6
/ \
2 4 7
Target = 28
输出: False
【代码】

class Solution:
def visit(self,root):
if not root:
return
self.ans[root.val]=self.ans.setdefault(root.val,0)+1
self.visit(root.left)
self.visit(root.right)
def findTarget(self, root: TreeNode, k: int) -> bool:
self.ans={}
self.visit(root)
for key in self.ans:
if k-key in self.ans:
if (k-key == key and self.ans[key]>=2) or (k-key)!=key:
return True
return False
【方法2】

class Solution:
def find(self,root,k,cnt):
if not root:
return False
if (k-root.val) in cnt:
return True
cnt.append(root.val)
return self.find(root.left,k,cnt) or self.find(root.right,k,cnt)
def findTarget(self, root: TreeNode, k: int) -> bool:
cnt=[]
return self.find(root,k,cnt)

该篇博客介绍了如何在一个二叉搜索树中查找两个节点,使它们的值之和等于给定的目标值。提供的解决方案包括两种方法,通过递归遍历和使用哈希表记录节点出现的次数来判断是否存在满足条件的节点对。案例展示了对于特定输入,算法的正确输出结果。

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



