108.E 将有序数组转换为二叉搜索树
Problem: 108. 将有序数组转换为二叉搜索树
思路
每次选择中间位置或者中间偏左位置mid = len(nums) / 2
作为root
节点,然后递归构造左右子树,做子树的范围是[0, mid]
,右子树的范围是[mid+1]
。
Code
/**
* 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
}
Last updated
Was this helpful?