题目
-
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
-
案例 1:
-
输入:
5
/ \
3 6
/ \
2 4 7 -
Target = 9
-
输出: True
-
-
案例 2:
-
输入:
5
/ \
3 6
/ \ \
2 4 7 -
Target = 28
-
输出: False
-
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法
/**
* 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) {
//声明一个集合,把它加入到find函数中
Set<Integer> set = new HashSet();
//返回find函数
return find(root,k,set);
}
public boolean find(TreeNode root ,int k ,Set<Integer> set){
if(root==null){
return false;
}
else{
int other=k-root.val;
if(set.contains(other)){
return true;
}
set.add(root.val);
//返回左子树或者右字树
return find(root.left,k,set)||find(root.right,k,set);
}
}
}
思路
- 没太明白
下一步总结
- 递归调用的基础是什么?
- 没弄太明白这题原理