算法分析与设计——LeetCode Problem.653 Two Sum IV - Input is a BST
2017-10-19 16:49
501 查看
题目链接
问题描述
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:
Example 2:
解题思路
可以将BST中序遍历一次,这样遍历的数据必是按升序排列,在遍历时将读到的数据存入vector中,然后用夹逼法得出结果即可。
(BST相关问题很多时候需要用到中序遍历)
class Solution {
public:
bool findTarget(TreeNode* root, int k) {
if (root == NULL) {
return false;
}
vector<int> v1;
inorder(root, v1);
int total = v1.size();
int h = 0, t = total - 1;
while (1) {
if (h == t) return false;
if (v1[h] + v1[t] == k) {
return true;
}
if (v1[h] + v1[t] < k) {
h++;
continue;
}
if (v1[h] + v1[t] > k) {
t--;
continue;
}
}
}
private:
void inorder(TreeNode *r, vector<int> &vec) {
if (r != NULL) {
inorder(r->left, vec);
vec.push_back(r->val);
inorder(r->right, vec);
}
}
};
问题描述
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
解题思路
可以将BST中序遍历一次,这样遍历的数据必是按升序排列,在遍历时将读到的数据存入vector中,然后用夹逼法得出结果即可。
(BST相关问题很多时候需要用到中序遍历)
class Solution {
public:
bool findTarget(TreeNode* root, int k) {
if (root == NULL) {
return false;
}
vector<int> v1;
inorder(root, v1);
int total = v1.size();
int h = 0, t = total - 1;
while (1) {
if (h == t) return false;
if (v1[h] + v1[t] == k) {
return true;
}
if (v1[h] + v1[t] < k) {
h++;
continue;
}
if (v1[h] + v1[t] > k) {
t--;
continue;
}
}
}
private:
void inorder(TreeNode *r, vector<int> &vec) {
if (r != NULL) {
inorder(r->left, vec);
vec.push_back(r->val);
inorder(r->right, vec);
}
}
};
相关文章推荐
- LeetCode 653: Two Sum IV - Input is a BST
- leetcode 653 Two Sum IV - Input is a BST
- [LeetCode] Two Sum IV - Input is a BST 两数之和之四 - 输入是二叉搜索树
- leetcode[Two Sum IV - Input is a BST]//待整理多种解法
- LeetCode之Two Sum IV - Input is a BST(Kotlin)
- LeetCode Two Sum IV - Input is a BST
- LeetCode Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST(leetcode)
- leetcode Two Sum IV - Input is a BST 两个数的和
- LeetCode #653 Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST问题及解法
- LeetCode.653 Two Sum IV - Input is a BST
- 【python】【leetcode】【算法题目167—Two Sum II - Input array is sorted】
- LC-Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST
- 算法分析与设计——LeetCode刷题之TwoSum(easy)
- [算法分析与设计] leetcode 每周一题: Kth Smallest Element in a BST