题目
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
案例 2:
思路
1、暴力解法。中序遍历二叉树,将每个节点的值存入一个动态数组,然后再二层遍历数组判断是否存在两数之和。
实现方法
一、暴力解法
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool findTarget(TreeNode* root, int k) {
vector<int> res;
sort(root,res);
for(int i=0;i<res.size()-1;i++){
for(int j=i+1;j<res.size();j++){
if(res[i]+res[j]==k)
return true;
}
}
return false;
}
void sort(TreeNode* root,vector<int> &res){
if(root){
sort(root->left,res);
res.push_back(root->val);
sort(root->right,res);
}
}
};