[Solved] Given the root of a Binary Search Tree and a target number k, return true if there exist two elements in the BST such that their sum is equal to the given target.

Table of Contents

Question

Given the root of a Binary Search Tree and a target number k, return true if there exist two elements in the BST such that their sum is equal to the given target.

Example 1:

sum tree 1
Input: root = [5,3,6,2,4,null,7], k = 9
Output: true

Example 2:

sum tree 2
Input: root = [5,3,6,2,4,null,7], k = 28
Output: false

Constraints:

  • The number of nodes in the tree is in the range [1, 104].
  • -104 <= Node.val <= 104
  • root is guaranteed to be a valid binary search tree.
  • -105 <= k <= 105

Python Solution

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right

def inorder(root,l):
    if root==None:return
    inorder(root.left,l)
    l.append(root.val)
    inorder(root.right,l)

class Solution:
    def findTarget(self, root: TreeNode, k: int) -> bool:
        l = []
        inorder(root,l)
        i=0
        j=len(l)-1
        while i<j:
            if l[i]+l[j]==k:return True
            elif l[i]+l[j]<k:i+=1
            else:j-=1
        return False

Leave a Reply

Your email address will not be published. Required fields are marked *