recursively: pick middle element as root, left half becomes left subtree, right half becomes right subtree. this ensures balanced tree.
base case: empty array returns null. the middle element naturally creates a balanced structure since we split evenly.
complexity
O(n) time to visit each element once, O(log n) space for recursion stack. balanced tree height is log n.