题目地址:Two Sum IV - Input is a BST - LeetCode
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
这道题目是Two Sum
的进阶,最简单的办法是用set,穷举遍历。
Python解法如下:
# 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 find(root, k, s):
if root == None:
return False
if root.val in s:
flag = 1
return True
s.add(k-root.val)
return find(root.left, k, s) or find(root.right, k, s)
s = set()
return find(root, k, s)
时间复杂度为O(n),空间复杂度为O(n)。
稍微好一点的做法是一层一层遍历,这样可以迭代解决。