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
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public boolean findTarget(TreeNode root, int k) { if (root == null) return false; List<Integer> arr = new ArrayList<Integer>(); toArr(root, arr); int head = 0, tail = arr.size()-1; while (head < tail) { if (arr.get(head)+arr.get(tail) == k) return true; else if (arr.get(head)+arr.get(tail) < k) { head ++; } else tail --; } return false; } private void toArr(TreeNode node, List<Integer> arr) { if (node == null) return ; toArr(node.left, arr); arr.add(node.val); toArr(node.right, arr); } }