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