Java实现 LeetCode 653 两数之和 IV - 输入 BST(递归,找差值)

653. 两数之和 IV - 输入 BST

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

案例 1:

输入:

    5
   / \
  3   6
 / \   \
2   4   7

Target = 9

输出: True

案例 2:

输入:

    5
   / \
  3   6
 / \   \
2   4   7

Target = 28

输出: False

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
      boolean found = false;
    public boolean findTarget(TreeNode root, int k) {
        inorder(new HashSet(),root,k);
        return found;
    }
    private void inorder(Set<Integer> set,TreeNode root,int k){
        if(root==null || found) return;
        inorder(set,root.left,k);
        set.add(root.val);
        if(set.contains(k-root.val) && root.val!=k-root.val){
            found = true;
        }
        inorder(set,root.right,k);
    }
}
上一篇:07. 重建二叉树


下一篇:PAT_Advanced Level_1020 Tree Traversals(C++_二叉树遍历)