You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
717 B
43 lines
717 B
2 years ago
|
package twosumiv
|
||
|
|
||
|
type TreeNode struct {
|
||
|
Val int
|
||
|
Left *TreeNode
|
||
|
Right *TreeNode
|
||
|
}
|
||
|
|
||
|
func lookup(node *TreeNode, target int) bool {
|
||
|
if node == nil {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
if node.Val == target {
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
if target < node.Val {
|
||
|
return lookup(node.Left, target)
|
||
|
}
|
||
|
|
||
|
return lookup(node.Right, target)
|
||
|
}
|
||
|
|
||
|
func recur(node *TreeNode, root *TreeNode, k int) bool {
|
||
|
if node == nil {
|
||
|
return false
|
||
|
}
|
||
|
remaining := k - node.Val
|
||
|
|
||
|
return (remaining != node.Val && lookup(root, remaining)) ||
|
||
|
recur(node.Left, root, k) ||
|
||
|
recur(node.Right, root, k)
|
||
|
}
|
||
|
|
||
|
func findTarget(root *TreeNode, k int) bool {
|
||
|
return recur(root, root, k)
|
||
|
}
|
||
|
|
||
|
func FindTarget(root *TreeNode, k int) bool {
|
||
|
return findTarget(root, k)
|
||
|
}
|