给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
解题思路:二叉搜索树的中序遍历是递增的,然后双指针解决
class Solution {
public:
vector<int> vec;
bool findTarget(TreeNode* root, int k) {
dfs(root,vec);
int i = 0 , j = vec.size() - 1;
while(i < j)
{
if(vec[i] + vec[j] == k) return true;
if(vec[i] + vec[j] < k) i++;
if(vec[i] + vec[j] > k) j--;
}
return false;
}
void dfs(TreeNode* root, vector<int> &vec)
{
if(root == nullptr) return;
dfs(root->left,vec);
vec.emplace_back(root->val);
dfs(root->right,vec);
}
};