解题思路
二叉搜索树的中序遍历是有序的。可以将中序遍历所得到的序列
放到res中,然后运用双指针解法来解决。
相关思路
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<Integer> res = new ArrayList<>();
public boolean findTarget(TreeNode root, int k) {
dfs(root);
int i=0,j=res.size()-1;
while(i<j){
int sum = res.get(i)+res.get(j);
if(sum==k) return true;
else if(sum>k) j--;
else if(sum<k) i++;
}
return false;
}
//二叉搜索树的中序遍历是有序的。
public void dfs(TreeNode root){
if(root==null) return;
dfs(root.left);
res.add(root.val);
dfs(root.right);
}
}