653. 两数之和 IV - 输入 BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
案例 1:
输入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
输出: True
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst
1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class TwoSumIV653 { 5 static class TreeNode { 6 int val; 7 TreeNode left; 8 TreeNode right; 9 TreeNode(int x) { 10 this.val = x; 11 } 12 } 13 public boolean findTarget(TreeNode root, int k) { 14 if(root == null) { 15 return false; 16 } 17 //先中序遍历获取一个升序数组,然后使用双指针遍历 18 List<Integer> list = new ArrayList<>(); 19 inOrder(root, list); 20 int i = 0; 21 int j = list.size() - 1; 22 while(i < j) { 23 int sum = list.get(i) + list.get(j); 24 if(sum == k) { 25 return true; 26 } 27 if(sum < k) { 28 i++; 29 }else { 30 j--; 31 } 32 } 33 return false; 34 } 35 36 public void inOrder(TreeNode root, List<Integer> list) { 37 if(root == null) { 38 return; 39 } 40 inOrder(root.left, list); 41 list.add(root.val); 42 inOrder(root.right, list); 43 } 44 } 45
无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧