給定一個二叉搜索樹和一個目標結果,如果 BST 中存在兩個元素且它們的和等於給定的目標結果,則返回 true。
案例 1:
輸入:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
輸出: True
案例 2:
輸入:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
輸出: False
class Solution {
public void dfs(TreeNode root){
if(root != null){
dfs(root.left);
list.add(root.val);
dfs(root.right);
}
}
List<Integer> list = new ArrayList();
public boolean findTarget(TreeNode root, int k) {
if(root == null)
return false;
dfs(root);
int i = 0,j = list.size()-1;
while(i < j){
int val = list.get(i) + list.get(j);
if(val > k)
j--;
if(val < k)
i++;
if(val == k)
return true;
}
return false;
}
}
兩個數的和,有序數組,前後兩個指針。