653. 两数之和 IV - 输入 BST 简答
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
案例 2:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
输出: False
代码参考:
package main
import "fmt"
func main() {
root := &TreeNode{Val: 1}
fmt.Println(findTarget(root, 2)) // false
}
func findTarget(root *TreeNode, k int) bool {
m := make(map[int]int)
return preTraverse(root, k, m)
}
// 和 two sum 一样
func preTraverse(root *TreeNode, k int, m map[int]int) bool {
if root == nil {
return false
}
if _, ok := m[k-root.Val]; ok { // 先序遍历保证了去重
return true
}
m[root.Val]++
return preTraverse(root.Left, k, m) || preTraverse(root.Right, k, m)
}
最后编辑: kuteng 文档更新时间: 2021-06-05 10:16 作者:kuteng