题目: 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。
示例:
1.
2.
思路分析一----HashSet
通过dfs遍历树的每个结点,查询哈希表内是否有与当前结点值加和后为目标值的元素,如果有,直接返回true,如果没有将当前值加入哈希set中,接着遍历该结点的宝宝结点进行递归查询。
算法复杂度分析:
1.时间复杂度:O(N),最坏情况下,需要遍历全树所有结点。
2.空间复杂度:O(N),最坏情况下,HashSet空间复杂度为O(N),递归需要的栈空间为O(N)。
Code-HashSet
class Solution {
Set<Integer> set = new HashSet<>();
public boolean findTarget(TreeNode root) {
if (root == null