题目简述:二叉搜索树中找到两个元素,如果这两个元素之和等于k,那么就返回true,如果找不到,则返回false
思路:因为是二叉搜索树的关系,所以可以转换为有序的数组来做这一题,二叉搜索树的中序遍历是一个递增的数组,所以,可以利用这一性质。 转换后的题目就是167题了
这一题考察了中序遍历的写法,以及对数组的逻辑处理。
var findTarget = function (root, k) {
let nums = []
// 中序遍历
var inorder = function (root) {
if (!root) return
inorder(root.left)
nums.push(root.val)
inorder(root.right)
}
inorder(root)
let left = 0, right = nums.length - 1
while (left < right) {
let sum = nums[left] + nums[right]
// 寻找合适的点
if (sum === k) {
return true
} else if (sum < k) {
left++
} else {
right--
}
}
return false
};