木又连续日更第5天(5/138)
木又的第147篇leetcode解题报告
二叉树
类型第37篇解题报告
leetcode第653题:两数之和 IV - 输入 BST
https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst
【题目】
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
案例 2:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
输出: False
【思路】
使用中序遍历或者层次遍历,使用hash表存储k-node.val,当遍历的元素存在于hash表中,则返回True。
【代码】
python版本
# 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
"""
self.d = {}
return self.helper(root, k)
def helper(self, node, k):
if not node:
return False
if node.val in self.d:
return True
self.d[k-node.val] = 1
return self.helper(node.left, k) or self.helper(node.right, k)