Binary search tree is applied when array is sorted . otherwise binary search tree not work.
Binary search will take O(nlogn) time only since take any element and find another element using logn comparision.
Another method :
1) Initialize Binary Hash Map M[] = {0, 0, ...}
2) Do following for each element A[i] in A[]
(a) If M[x - A[i]] is set then print the pair (A[i], x - A[i])
(b) Set M[A[i]]
Take O(n) time only.