Leetcode 653. Two Sum IV - Input is a BST
2017-08-30 09:38
786 查看
Leetcode 653. Two Sum IV - Input is a BST
—————————————–
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树,得到从小到大的递增数列 list。然后用Sum Two的算法搞定。
或者设置两个变量i,j。i从前向后遍历,j从后向前遍历。
如果 list[i] 与 list[j] 的和大于k,说明 j 指向的元素太大了,j 要向前移动一位
如果 list[i] 与 list[j] 的和小于k,说明 i 指向的元素太小了,i 要向后移动一位
java 代码如下:
—————————————–
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树,得到从小到大的递增数列 list。然后用Sum Two的算法搞定。
或者设置两个变量i,j。i从前向后遍历,j从后向前遍历。
如果 list[i] 与 list[j] 的和大于k,说明 j 指向的元素太大了,j 要向前移动一位
如果 list[i] 与 list[j] 的和小于k,说明 i 指向的元素太小了,i 要向后移动一位
java 代码如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public boolean findTarget(TreeNode root, int k) { List<Integer> list = new ArrayList(); inorder(root, list); int i = 0, j = list.size() - 1; while(i < j) { int sum = list.get(i) + list.get(j); if(sum < k) { i++; }else if(sum > k) { j--; }else { return true; } } return false; } public void inorder(TreeNode root, List<Integer> list) { if(root == null) { return ; } inorder(root.left, list); list.add(root.val); inorder(root.right, list); } }
相关文章推荐
- 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 中序遍历 + 深度优先遍历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
- 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
- LeetCode653. Two Sum IV - Input is a BST
- <easy>LeetCode Problem -- 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 解题报告
- 2017.11.1 LeetCode - 653. Two Sum IV - Input is a BST