108 将有序数组转换为二叉搜索树-简单

题目:

给你一个整数数组 nums,其中元素已经按升序排列,请你将其转换为一个 高度平衡 的二叉搜索树。

高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1」的二叉树。

分析:

跟【从中序和后序序列构造二叉树】类似,为了保持高度平衡,从有序数组中去中间值作为根,依次递归生成左右子树。

// date 2023/10/23
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func sortedArrayToBST(nums []int) *TreeNode {
    if len(nums) == 0 {
        return nil
    }
    mid := len(nums)/2

    root := &TreeNode{Val: nums[mid]}
    root.Left = sortedArrayToBST(nums[0:mid])
    root.Right = sortedArrayToBST(nums[mid+1:])

    return root
}

最后更新于