LeetCode653 | 两数之和 IV - 输入 BST

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jmu201521121021/article/details/84621666

LeetCode653 | 两数之和 IV - 输入 BST

  • 问题描述
    给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。

案例 1:

输入:
5
/
3 6
/ \
2 4 7

Target = 9

输出: True

案例 2:

输入:
5
/
3 6
/ \
2 4 7

Target = 28

输出: False

  • 解题思路
  • 利用哈希表,遍历整颗树, 如果(目标值- 当前节点值)存在哈希表中,则存在, 否则继续遍历左右子树。
  • 代码
/**
 * 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) {
        if (!root){
            return false;
        }
        unordered_set<int> hx;
        return find(root, k, hx);
    }
    bool find(TreeNode* root, int k, unordered_set<int>& hx) {
        if(!root){
            return false;
        }
        if(hx.count(k-root->val)){
            return true;
        }
        hx.insert(root->val);
        return find(root->left, k, hx)||find(root->right, k, hx);
    }
};

猜你喜欢

转载自blog.csdn.net/jmu201521121021/article/details/84621666