653. 两数之和 IV - 输入 BST
两数之和 IV - 输入 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
提示:
二叉树的节点个数的范围是 [1, 104].
-104 <= Node.val <= 104
root 为二叉搜索树
-105 <= k <= 105
思路:
时间复杂度:O(n),空间复杂度O(n)
中序遍历之后把数字放入数组,然后遍历数组看符不符合条件
代码:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func findTarget(root *TreeNode, k int) bool {
var res []int
var inorder func(root *TreeNode)
inorder = func(root *TreeNode){
if root == nil{
return
}
inorder(root.Left)
res = append(res, root.Val)
inorder(root.Right)
}
inorder(root)
l,r := 0,len(res)-1
for l<r{
if res[l]+res[r] == k{
return true
}else if res[l]+res[r]<k{
l++
}else{
r--
}
}
return false
}
代码效率:
执行用时:24 ms, 在所有 Go 提交中击败了52.82%的用户
内存消耗:7.2 MB, 在所有 Go 提交中击败了76.06%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!