算法实现之最小高度树

题目地址:
最小高度树

题目描述
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例
image

解题思路:
创建一棵高度最小的二叉搜索树,也就是首先是一个二叉搜索树,

  • 二叉搜索树的特点是节点左边子树的值比节点值小,右边子树的值比节点的值大
  • 其实要是一个高度最小的二叉树,也就是说深度最小,
  • 本题又是一个升序的有序整数数组,所以要从中间节点开始遍历
  • 然后依次遍历左右子树的中间节点 得到最终结果

代码实现

/**
 * @param {number[]} nums
 * @return {TreeNode}
 */
var sortedArrayToBST = function(nums) {
    if(!nums.length) return null
    let midIndex = nums.length >> 1
    let tree = new TreeNode(nums[midIndex])
    // 左闭右开
    tree.left = sortedArrayToBST(nums.slice(0, midIndex))
    tree.right = sortedArrayToBST(nums.slice(midIndex + 1))
    return tree
};

posted @ 2022-09-14 11:40  卖萌实习生  阅读(41)  评论(0)    收藏  举报