Back to Leetcode Go

108. Convert Sorted Array to Binary Search Tree

website/content.en/ChapterFour/0100~0199/0108.Convert-Sorted-Array-to-Binary-Search-Tree.md

1.7.971.4 KB
Original Source

108. Convert Sorted Array to Binary Search Tree

Problem

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
     / \
   -3   9
   /   /
 -10  5

Problem Summary

Convert a sorted array in ascending order into a height-balanced binary search tree. In this problem, a height-balanced binary tree means a binary tree in which the absolute value of the height difference between the left and right subtrees of every node does not exceed 1.

Solution Approach

  • Convert a sorted array into a height-balanced binary search tree according to the definition

Code

go

package leetcode

/**
 * 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
	}
	return &TreeNode{Val: nums[len(nums)/2], Left: sortedArrayToBST(nums[:len(nums)/2]), Right: sortedArrayToBST(nums[len(nums)/2+1:])}
}