653 两数之和 IV - 输入BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
案例 2:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
输出: False
解法
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def findTarget(self, root: TreeNode, k: int) -> bool:
def searchTree(root):
if not root:return []
return searchTree(root.left)+[root.val]+searchTree(root.right)
arr=searchTree(root)
l,r=0,len(arr)-1
while l<r:
s=arr[l]+arr[r]
if s==k:return True
elif s>k:r-=1
else:l+=1
return False