108. 将有序数组转换为二叉搜索树

106 阅读1分钟

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

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

来源:力扣(LeetCode) 链接:leetcode.cn/problems/co… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:

func sortedArrayToBST(nums []int) *TreeNode {
    length := len(nums) 
    if length == 0 {
        return nil
    }

    return coreSortedArrayToBST(nums, 0, length - 1)
}

func coreSortedArrayToBST(nums []int, l, r int) *TreeNode {
    if l > r {
        return nil
    }


    mid := (l + r)  / 2
    node := &TreeNode{
        Val: nums[mid],
    }
    node.Left = coreSortedArrayToBST(nums, l, mid - 1)
    node.Right = coreSortedArrayToBST(nums, mid + 1, r)
    return node
}