LeetCode/653. 两数之和 IV - 输入 BST

653. 两数之和 IV - 输入 BST

给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true

案例1:

输入: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 9

输出: True

案例2:

1
2
3
4
5
6
7
8
9
10
输入: 
5
/ \
3 6
/ \ \
2 4 7

Target = 28

输出: False

来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:

本题和该系列前几道题思路是一样的,就是将结果存储在一个集合中,然后对二叉搜索树进行遍历,如果能找到两个相加等于目标值的节点,则返回true,否则返回false

具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public boolean findTarget(TreeNode root, int k) {
List<Integer> list = new ArrayList<>();
return search(root, k, list);
}

boolean search(TreeNode node, int target, List<Integer> list) {
if (node == null)
return false;
if (list.contains(target - node.val))
return true;
list.add(node.val);
return search(node.left, target - node.val, list) || search(node.right, target - node.val, list);
}
}

Comments