python--leetcode653. Two Sum IV

来源:互联网 发布:启云软件怎么样 编辑:程序博客网 时间:2024/05/01 05:43

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   7Target = 9Output: True

Example 2:

Input:     5   / \  3   6 / \   \2   4   7Target = 28Output: False


这一题就是给你一个二叉排序树以及一个数,让你判断树中是否有两个数字之和等于这个数。
解题思路就是开一个集合set,把此数字与树中每一个结点之差放进去,然后判断结点与集合中的数是否相等。
代码:
# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass 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