leetcode108有序数组转换二叉搜索树

leetcode108 Convert Sorted Array to Binary Search Tree

Posted by BY on October 23, 2019

前言

中间又断更新。

正文

问题来源

本问题来自leetcode上的108题。

问题描述

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例 1:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0
     / \
   -3   9
   /   /
 -10  5

分析:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */


func createBST(si []int, start, end int) *TreeNode {
    if start > end {
        return nil
    }
    mid := (start + end) / 2 
    t := &TreeNode{}
    t.Val = si[mid]
    t.Left = createBST(si, start, mid-1)
    t.Right = createBST(si, mid+1, end)
    return t
}

func sortedArrayToBST(nums []int) *TreeNode {
    return createBST(nums, 0, len(nums)-1)
}

总结:

勤思考。

结语

不管怎么样好好加油。