653. 两数之和 IV

给定一个二叉搜索树和一个目标结果,如果 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     
无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
原文地址:https://www.cnblogs.com/xiyangchen/p/11154993.html