LeetCode-653.Two Sum IV - Input is a BST

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

将二叉搜索树经中序遍历保存为递增数组,然后使用双指针

    public boolean findTarget(TreeNode root, int k) {
        List<Integer> list = new ArrayList<Integer>();
        midList(root,list);
        int left =0;
        int right =list.size()-1;
        while(left<right){
            int sum =list.get(left)+list.get(right);
            if(sum==k){
                return true;
            }
            else if(sum<k){
                left++;
            }
            else{
                right--;
            }
        }
        return false;
    }
    
    public void midList(TreeNode root,List<Integer > list){
        if(root==null){
            return;
        }
        midList(root.left,list);
        list.add(root.val);
        midList(root.right,list);
    }

 

posted @ 2019-08-06 21:15  月半榨菜  阅读(136)  评论(0编辑  收藏  举报