# 108.E 将有序数组转换为二叉搜索树

> Problem: [108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/)

## 思路

每次选择中间位置或者中间偏左位置`mid = len(nums) / 2`作为`root`节点，然后递归构造左右子树，做子树的范围是`[0, mid]`，右子树的范围是`[mid+1]`。

## Code

```go
/**
 * 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
	}

	mid := len(nums) / 2
	root := &TreeNode{Val: nums[mid]}
	root.Left = sortedArrayToBST(nums[0:mid])
	if mid < len(nums) {
		root.Right = sortedArrayToBST(nums[mid+1:])
	}

	return root
}
```
