LeetCode653 | 兩數之和 IV - 輸入 BST
阿新 • • 發佈:2018-11-29
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); } };