给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

    高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

    示例 1:
    image.png
    输入:nums = [-10,-3,0,5,9]
    输出:[0,-3,9,-10,null,5]
    解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

    示例 2:

    输入:nums = [1,3]
    输出:[3,1]
    解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

    1. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val, left, right) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.left = (left===undefined ? null : left)
    6. * this.right = (right===undefined ? null : right)
    7. * }
    8. */
    9. /**
    10. * @param {number[]} nums
    11. * @return {TreeNode}
    12. */
    13. var sortedArrayToBST = function (nums) {
    14. const build = (nums, left, right) => {
    15. if (left > right) {
    16. return null;
    17. }
    18. let mid = Math.floor(left + (right - left) / 2);
    19. let root = new TreeNode(nums[mid]);
    20. // 递归构建左子树
    21. root.left = build(nums, left, mid - 1);
    22. // 递归构造右子树
    23. root.right = build(nums, mid + 1, right);
    24. return root;
    25. }
    26. return build(nums, 0, nums.length - 1);
    27. };

    image.png