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?