1. 程式人生 > >[LeetCode&Python] Problem 653. Two Sum IV - Input is a BST

[LeetCode&Python] Problem 653. Two Sum IV - Input is a BST

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

# 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
        """
        if root:
            q=[root]
            rem=[]
            while q:
                qtopnode=q.pop(0)
                if k-qtopnode.val in rem:
                    return True
                rem.append(qtopnode.val)
                if qtopnode.left:
                    q.append(qtopnode.left)
                if qtopnode.right:
                    q.append(qtopnode.right)
                    
            return False
        return False