653. two sum iv input is a bst 两数之和 IV - 输入 BST
一、刷题内容
原题链接
https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/
内容描述
给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
示例 1:

输入: root = [5,3,6,2,4,null,7], k = 9
输出: true
示例 2:

输入: root = [5,3,6,2,4,null,7], k = 28
输出: false
示例 3:
输入: root = [2,1,3], k = 4
输出: true
示例 4:
输入: root = [2,1,3], k = 1
输出: false
示例 5:
输入: root = [2,1,3], k = 3
输出: true
提示:
二叉树的节点个数的范围是 [1, 10^4].
-10^4 <= Node.val <= 10^4
root 为二叉搜索树
-10^5 <= k <= 10^5
二、解题方法
1.方法一:中序遍历、双指针查找
class Solution:
def findTarget(self, root: TreeNode, k: int) -> bool:
nums = []
def mid_order(root):
if root:
mid_order(root.left)
nums.append(root.val)
mid_order(root.right)
mid_order(root)
l, r = 0, len(nums) - 1
while l < r:
if nums[l] + nums[r] == k:
return True
elif nums[l] + nums[r] > k:
r -= 1
else:
l += 1
return False
时间复杂度:O(n),树的遍历和指针的移动都是O(n)。
空间复杂度:O(n),取决于DFS的递归栈深度,最大不超过n。
本文介绍了一种解决LeetCode上二数之和IV-输入BST问题的有效方法。该方法通过中序遍历二叉搜索树并利用双指针技巧,实现了高效的查找算法。适用于目标和为k的情况下判断是否存在两个节点值相加等于k。
131

被折叠的 条评论
为什么被折叠?



