- 描述:Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.
Example 1:
Input:
5 / \ 3 6 / \ \ 2 4 7
Target = 9
Output: True
Example 2:
Input:
5 / \ 3 6 / \ \ 2 4 7
Target = 28
Output: False
- 分析:给出一棵二叉搜索数,要求判断这棵树中是否存在两个元素的和为target,存在则为true,否则为false。
- 思路一:dfs深度优先搜索。将每个节点的值存入set中进行查找。
class Solution {
public:
bool findTarget(TreeNode* root, int k) {
my_set.clear();
return DFS(root, k);
}
private:
unordered_set<int> my_set;
bool DFS(TreeNode* root, int k) {
if (!root) return false;
if (my_set.count(k - root -> val)) return true;
my_set.insert(root -> val);
return DFS(root -> left, k) || DFS(root -> right, k);
}
};