难度简单385收藏分享切换为英文接收动态反馈
给定一个二叉搜索树 root
和一个目标结果 k
,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true
。
class Solution {
public boolean findTarget(TreeNode root, int k) {
Set<Integer> setqd=new HashSet<>();
return dfs(setqd,root,k);
}
public static boolean dfs(Set<Integer> setqd,TreeNode root, int k){
if(root==null){
return false;
}
int re=k-root.val;
boolean res=setqd.contains(root.val);
setqd.add(re);
return res || dfs(setqd,root.left,k) ||dfs(setqd,root.right,k);
}
}
解释:
访问每一个节点,k值和节点里的值求差,这个差值放入一个set集合中记录下来。
在后面的节点中发现set集合中有这个节点值,就说明这个节点和前面某一个节点之和等于k