LeetCode每日一题:4.2最小高度树

三维形体的表面积

一、LeetCode题解

瞧一瞧~

二、算法题

题目

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

解法一 (递归)

思路

前提:遍历的是一个有序数组

  • 确定根节点

    • 为了保证树的高度最小,需要尽可能的保证左子树和右子树的高度差不超过1
  • 生成左子树

  • 生成右子树

  • 时间复杂度:O(n),递归涉及到每一个元素。

  • 空间复杂度:O(n)。

代码

/**
 * 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) {
    if(!nums.length) return null
    var mid = nums.length >> 1
    var n = new TreeNode(nums[mid])
    n.left = sortedArrayToBST(nums.slice(0, mid))
    n.right = sortedArrayToBST(nums.slice(mid+1))
    return n
};

结果

在这里插入图片描述

发布了292 篇原创文章 · 获赞 48 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/jbj6568839z/article/details/105561200