Search⌘ K
AI Features

Convert Sorted Array to Binary Search Tree

Explore how to construct a height-balanced binary search tree from a sorted array by applying depth-first search methods. Understand key constraints, practice problem-solving steps, and implement your own solution in an interactive coding environment.

Statement

Given an array of integers, nums, sorted in ascending order, your task is to construct a height-balanced binary search tree (BST) from this array.

In a height-balanced BST, the difference of heights of the left subtree and right subtree of any node is not more than 1.

Note: There can be multiple valid BSTs for a given input.

Constraints:

  • 11 \leq nums.length 103\leq 10^3
  • 104-10^4 \leq nums[i] 104\leq 10^4
  • nums is sorted in strictly ascending order.

Examples

Understand the problem

Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps us to check if you’re solving the correct problem:

Convert Sorted Array to a Binary Search Tree

1.

Select all valid BSTs that can be created with the given sorted array:

[5, 10, 15, 20] Multi-select

A.
  5
 / \
15  10
     \
      20
B.
  10
 /  \
5    15
      \
       20
C.
    15
   /  \
  5    20
 /   
10
D.
    15
   /  \
  10   20
 /
5

1 / 3

Figure it out!

We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4

Try it yourself

Implement your solution in the following coding playground.

Go
usercode > SortedArrayToBST.go
package main
import (. "golang-test-code/ds_v1/BinaryTree") // TreeNode[T]
// Definition of a binary tree node
// type TreeNode[T any] struct {
// Data T
// Left *TreeNode[T]
// Right *TreeNode[T]
// }
func sortedArrayToBST(nums []int) *TreeNode[int] {
// Replace this placeholder return statement with your code
return &TreeNode[int]{Data: -1}
}
Convert Sorted Array to Binary Search Tree