思路:
中间节点作为根节点,左边作为左子树,右边作为右子树
每个节点都这样操作,采用递归
func sortedArrayToBST(nums []int) *TreeNode {
//注意,这里right的边界是len(nums)-1
//return toBST(nums, 0, len(nums))
return toBST(nums, 0, len(nums)-1)
}
func toBST(nums []int, left, right int) *TreeNode {
if right < left {
return nil
}
mid := left + (right-left)/2
root := &TreeNode{
Val: nums[mid],
}
root.Left = toBST(nums, left, mid-1)
root.Right = toBST(nums, mid+1, right)
return root
}