LeetCode

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);
    }
    
}
原文地址:https://www.cnblogs.com/wxisme/p/7338772.html