Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.
Example 1:
Input: 5 / \ 3 6 / \ \ 2 4 7 Target = 9 Output: True
Example 2:
Input: 5 / \ 3 6 / \ \ 2 4 7 Target = 28 Output: False
这一题就是给你一个二叉排序树以及一个数,让你判断树中是否有两个数字之和等于这个数。
解题思路就是开一个集合set,把此数字与树中每一个结点之差放进去,然后判断结点与集合中的数是否相等。
代码:
# 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 findTarget(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: bool
"""
a = set()
self.f = False
def dfs(root, k):
if not root:
return
if root.val not in a:
a.add(k - root.val)
else:
self.f = True
dfs(root.left, k)
dfs(root.right, k)
dfs(root, k)
return self.f