import java.util.*;

public class Solution {
    public TreeNode sortedArrayToBST (int[] arr) {
        // 预处理
        int len = arr.length;
        if (len == 0) return null;
        
        // 获取数组中点下标
        int mid = len >> 1;
        // 创建根结点
        TreeNode root = new TreeNode(arr[mid]);
        // 递归构造左右子树
        root.left = sortedArrayToBST(Arrays.copyOfRange(arr, 0, mid)); // 前闭后开
        root.right = sortedArrayToBST(Arrays.copyOfRange(arr, mid + 1, len)); // 同上

        // 构造完毕,返回结果
        return root;
    }
}