来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-height-tree-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。
解答
有序数组转二叉搜索树:
- 二分查找找中间节点
- 中间节点以左为左子节点树
中间节点以右为右子节点树
/*** Definition for a binary tree node.* function TreeNode(val) {* this.val = val;* this.left = this.right = null;* }*//*** @param {number[]} nums* @return {TreeNode}*/var sortedArrayToBST = function(nums) {function traverse (arr) {if (arr?.length) {if (arr?.length === 1) {return new TreeNode(arr[0]);}let mid = arr.length >> 1;let val = arr[mid];let node = new TreeNode(val);let leftArr = arr.slice(0, mid);let rightArr = arr.slice(mid + 1);if (leftArr?.length) {node.left = traverse(leftArr);}if (leftArr?.length) {node.right = traverse(rightArr);}return node;} else {return null;}}return traverse(nums);};
