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

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)
}