Two Sum IV - Input is a BST
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.
解析
找到二叉树中两个数之和是否等于目标值。
解答
两个数之和的题一定要用hash表。
这道题中遍历二叉树就行,然后用一个哈希set,在递归函数函数中,如果node为空,返回false。如果k减去当前结点值在哈希set中存在,直接返回true;否则就将当前结点值加入哈希set,然后对左右子结点分别调用递归函数并且或起来返回即可,参见代码如下:
class Solution {
public:
bool findTarget(TreeNode* root, int k) {
if (!root) return false;
unordered_set<int> s;
return findNode(root,k,s);
}
bool findNode(TreeNode* node, int k, unordered_set<int>& s){
if(!node) return false;
if(s.count(k-node->val)) return true;
s.insert(node->val);
return findNode(node->left, k, s) || findNode(node->right, k, s);
}
};