Leetcode 653.两数之和 IV - 输入 BST
1 题目描述(Leetcode题目链接)
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
输出: False
2 题解
中序遍历得到有序数组后,再用双指针来做就可以了。更多关于二叉搜索树。
# 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 inorder(root):
seq = []
if root:
seq += inorder(root.left)
seq.append(root.val)
seq += inorder(root.right)
return seq
seq = inorder(root)
i, j = 0, len(seq)-1
while i < j:
if seq[i] + seq[j] == k:
return True
elif seq[i] + seq[j] > k:
j -= 1
else:
i += 1
return False