leetcode-兩數之和IV
阿新 • • 發佈:2019-01-05
給定一個二叉搜尋樹和一個目標結果,如果 BST 中存在兩個元素且它們的和等於給定的目標結果,則返回 true。
案例 1:
輸入: 5 / \ 3 6 / \ \ 2 4 7 Target = 9 輸出: True
案例 2:
輸入: 5 / \ 3 6 / \ \ 2 4 7 Target = 28 輸出: False
法一:遞迴+雜湊表
bool findinSet(TreeNode *node,multiset<int> &s,int k) { if (!node) return false; if (s.count(k - node->val) != 0) return true; s.insert(node->val); return findinSet(node->left, s, k) || findinSet(node->right, s, k); } bool findTarget(TreeNode* root, int k) { if (!root) return false; multiset<int> s; return findinSet(root, s, k); }
法二:迭代+雜湊表
bool findTarget(TreeNode* root, int k) { if (!root) return false; multiset<int> s; queue<TreeNode*> q; q.push(root); while (!q.empty()) { auto t = q.front(); q.pop(); if (s.count(k - t->val) != 0) return true; s.insert(t->val); if (t->left) q.push(t->left); if (t->right) q.push(t->right); } return false; }