LeetCode Top Interview 150

108. Convert Sorted Array to Binary Search Tree

Easy

Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree.

A height-balanced binary tree is a binary tree in which the depth of the two subtrees of every node never differs by more than one.

Example 1:

Input: nums = [-10,-3,0,5,9]

Output: [0,-3,9,-10,null,5]

Explanation: [0,-10,5,null,-3,null,9] is also accepted:

Example 2:

Input: nums = [1,3]

Output: [3,1]

Explanation: [1,3] and [3,1] are both a height-balanced BSTs.

Constraints:

Solution

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

func makeTree(num []int, left, right int) *TreeNode {
	if left > right {
		return nil
	}
	mid := (left + right) / 2
	midNode := &TreeNode{Val: num[mid]}
	midNode.Left = makeTree(num, left, mid-1)
	midNode.Right = makeTree(num, mid+1, right)
	return midNode
}