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
直接将BST中序遍历放进了数组里,然后首尾匹配。
package leetcode;
import java.util.ArrayList;
import java.util.List;
/**
* Created by linjian on 17/8/9.
*/
public class Leetcode653 {
List<Integer> list = new ArrayList<>();
public boolean findTarget(TreeNode root, int k) {
in(list,root);
int i=0;
int j =list.size()-1;
while (i<j){
int tmp = list.get(i)+list.get(j);
if (tmp==k) return true;
if (tmp<k) i++;
else j++;
}
return false;
}
public static void in(List<Integer> list,TreeNode root){
if (root==null) return ;
in(list,root.left);
list.add(root.val);
in(list,root.right);
}
}