My thought is to sort the array and then start from the midpoint as the root and generate the branches from the midpoint of the two halves of the array. and so on...
Does anyone else know a better way?