思路:由于是BST,所以我们可以先中序遍历,得到一个升序序列,再整两个头尾指针,进行判断‘
class Solution{
private ArrayList<Integer> ans = new ArrayList<>();
public boolean findTarget(TreeNode root, int k) {
inorder(root);
int x = 0;
int y = ans.size() - 1;
boolean flag = false;
while(x < y)
{
int sum = ans.get(x) + ans.get(y);
if(sum > k) {y--;}
if(sum < k) x++;
if(sum == k)
{flag =true;
break;}
}
return flag;
}
public void inorder(TreeNode root)
{
if(root != null)
{
inorder(root.left);
ans.add(root.val);
inorder(root.right);
}
}
}