给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
案例 2:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
输出: False
class Solution {
public void dfs(TreeNode root){
if(root != null){
dfs(root.left);
list.add(root.val);
dfs(root.right);
}
}
List<Integer> list = new ArrayList();
public boolean findTarget(TreeNode root, int k) {
if(root == null)
return false;
dfs(root);
int i = 0,j = list.size()-1;
while(i < j){
int val = list.get(i) + list.get(j);
if(val > k)
j--;
if(val < k)
i++;
if(val == k)
return true;
}
return false;
}
}
两个数的和,有序数组,前后两个指针。