leetcode-二叉树-将有序数组转换为二叉搜索树

23 阅读1分钟

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

输入: nums = [-10,-3,0,5,9]
输出: [0,-3,9,-10,null,5]
解释: [0,-10,5,null,-3,null,9] 也将被视为正确答案

第一种解法

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func sortedArrayToBST(nums []int) *TreeNode {
    return helper(nums, 0, len(nums)-1)
}

func helper(nums []int, left, right int) *TreeNode {
    if left > right {
        return nil
    } 

    mid := (left+right) >> 1
    root := &TreeNode{Val: nums[mid]}
    root.Left = helper(nums, left, mid-1)
    root.Right = helper(nums, mid+1, right)
    return root 
}