653. 两数之和 IV - 输入 BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
*案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
案例 2:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
输出: False
思路:
遍历二叉树,检查k和当前节点值的差是否存在哈希表中,如果存在返回True即可
# 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
"""
dic = {}
return self.helper(root, k, dic)
def helper(self, root, k, dic):
if not root:
return False
if dic.get(k - root.val, None) == 1:
return True
dic[root.val] = 1
return self.helper(root.left, k, dic) or self.helper(root.right, k, dic)

浙公网安备 33010602011771号