Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.

Example 1:

Input: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 9

Output: True

 

Example 2:

Input: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 28

Output: False

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean findTarget(TreeNode root, int k) {
        if (root == null)
            return false;
        List<Integer> arr = new ArrayList<Integer>();
        toArr(root, arr);
        int head = 0, tail = arr.size()-1;
        while (head < tail) {
            if (arr.get(head)+arr.get(tail) == k)
                return true;
            else if (arr.get(head)+arr.get(tail) < k) {
                head ++;
            }
            else tail --;
        }
        return false;
    }
    
    private void toArr(TreeNode node, List<Integer> arr) {
        if (node == null)
            return ;
        toArr(node.left, arr);
        arr.add(node.val);
        toArr(node.right, arr);
    }
    
}

 

相关文章:

  • 2022-12-23
  • 2021-06-27
  • 2022-02-11
  • 2022-12-23
  • 2022-12-23
  • 2021-05-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-11
  • 2022-01-13
  • 2022-01-25
  • 2022-12-23
  • 2021-10-14
  • 2021-10-06
  • 2021-05-30
相关资源
相似解决方案