leetcode 653. Two Sum IV - Input is a BST
2017-09-03 11:44
645 查看
1.题目
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.翻译:给一棵二叉搜索树和一个目标值,判断是否存在两个节点的值相加等于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
2.分析
要找出任意两个节点,他们的和为target。由于是BST,用中序遍历,得到的数组为递增数组,从数组两端开始判断i =0,j=len-1
a[i]+a[j] == target 返回 true
a[i]+a[j] < target ++i
a[i]+a[j] > target –j
3.代码
class Solution { public: bool findTarget(TreeNode* root, int k) { vector<int> nums; stack<TreeNode*> nodes; while (!nodes.empty()||root) { if (root) { nodes.push(root); root = root->left; } else { root = nodes.top(); nodes.pop(); nums.push_back(root->val); root = root->right; } } int left = 0, right = nums.size() - 1; while (left < right) { int sum = nums[left] + nums[right]; if (sum == k) return true; else if (sum < k) ++left; else --right; } return false; } };
看到BST就要快速联想到in-order 遍历
相关文章推荐
- <easy>LeetCode Problem -- 653. Two Sum IV - Input is a BST
- leetcode653. Two Sum IV - Input is a BST
- LeetCode-653. Two Sum IV - Input is a BST
- 【LeetCode】653. Two Sum IV - Input is a BST
- LeetCode-653. Two Sum IV - Input is a BST
- python--leetcode653. Two Sum IV - Input is a BST
- LeetCode - 653. Two Sum IV - Input is a BST
- leetcode专题—653. Two Sum IV - Input is a BST
- Leetcode: 653. Two Sum IV - Input is a BST
- leetcode 653. Two Sum IV - Input is a BST
- LeetCode 653. Two Sum IV – Input is a BST
- leetcode 653. Two Sum IV - Input is a BST
- LeetCode - 653. Two Sum IV - Input is a BST
- Leetcode 653. Two Sum IV - Input is a BST 两数相加4 解题报告
- leetcode 653. Two Sum IV - Input is a BST 中序遍历 + 深度优先遍历DFS
- LeetCode - 653. Two Sum IV - Input is a BST
- Leetcode 653. Two Sum IV - Input is a BST
- leetcode 653. Two Sum IV - Input is a BST
- LeetCode 653. Two Sum IV - Input is a BST
- leetcode: 653. Two Sum IV - Input is a BST