Add solution for leetcode 108 task

This commit is contained in:
pro100ton 2025-03-05 23:50:11 +03:00
parent df759315e2
commit 9d2268e871
2 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,3 @@
module BST_108
go 1.21.3

View file

@ -0,0 +1,50 @@
package main
import "fmt"
/**
Given an integer array nums where the elements are sorted in ascending order, convert it to a
height-balanced binary search tree.
Constraints:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums is sorted in a strictly increasing order.
**/
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func sortedArrayToBST(nums []int) *TreeNode {
if len(nums) == 0 {
return nil
}
return buildBST(nums, 0, len(nums)-1)
}
func buildBST(nums []int, left, right int) *TreeNode {
if left > right {
return nil
}
// Find the middle element and make it the root
mid := (left + right) / 2
root := &TreeNode{Val: nums[mid]}
// Recursively build the left and right subtrees
root.Left = buildBST(nums, left, mid-1)
root.Right = buildBST(nums, mid+1, right)
return root
}
func main() {
nums := []int{2, 3, 4, 5, 6}
result := sortedArrayToBST(nums)
fmt.Printf("%v, left val: %v, right val: %v", result.Val, result.Left.Val, result.Right.Val)
}