给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
思路:
- 总思路:因为这个数组已经是升序遍历的数组,所有我们只需要将数组中间数即为当前根节点
- 然后依次递归求出当前根节点的左右子节点
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
function sortedArrayToBST(nums: number[]): TreeNode | null {
if (nums.length == 0)
return null;
return sortedArrayToBSTTraverse(nums, 0, nums.length - 1);
};
function sortedArrayToBSTTraverse(num: number[], start: number, end: number) {
if (start > end)
return null;
let mid = (start + end) >> 1;
let root = new TreeNode(num[mid]);
root.left = sortedArrayToBSTTraverse(num, start, mid - 1);
root.right = sortedArrayToBSTTraverse(num, mid + 1, end);
return root;
}