给定一个二叉搜索树和一个目标结果,如果 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); } }
|