package tree; import java.util.HashSet; /** * Created by gouthamvidyapradhan on 16/12/2017. Given a Binary Search Tree and a target number, * return true if there exist two elements in the BST such that their sum is equal to the given * target. * *

Example 1: Input: 5 / \ 3 6 / \ \ 2 4 7 * *

Target = 9 * *

Output: True Example 2: Input: 5 / \ 3 6 / \ \ 2 4 7 * *

Target = 28 * *

Output: False */ public class TwoSumIV { public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } /** * Main method * * @param args * @throws Exception */ public static void main(String[] args) throws Exception {} public boolean findTarget(TreeNode root, int k) { return inorder(root, new HashSet<>(), k); } private boolean inorder(TreeNode node, HashSet set, int k) { if (node != null) { int req = k - (node.val); if (set.contains(req)) { return true; } set.add(node.val); if (inorder(node.left, set, k)) { return true; } else { if (inorder(node.right, set, k)) { return true; } } } return false; } }