将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
* 递归函数,采用中序遍历法还原高度平衡二叉搜索树
*/
const createNode = (nums:number[],start:number,end:number) => {
if(start>end){
return null;
}
const mid = Math.floor((start + end)*0.5);
const root = new TreeNode(nums[mid]);
root.left = createNode(nums,start,mid - 1);
root.right = createNode(nums,mid+1,end);
return root;
}

function sortedArrayToBST(nums: number[]): TreeNode | null {
const n: number = nums.length;
if (n === 0) {
return null;
}
return createNode(nums,0,n-1);
};