2021-10-07:将有序数组转换为二叉搜索树。给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树
2021-10-07:将有序数组转换为二叉搜索树。给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。力扣108。
福大大 答案2021-10-07:
自然智慧即可。找中点,左节点=左边递归,右节点=右边递归。
时间复杂度:O(N)。
空间复杂度:O(N)。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
ret := sortedArrayToBST([]int{1, 2, 3, 4, 5})
fmt.Println(ret)
}
type TreeNode struct {
val int
left *TreeNode
right *TreeNode
}
func sortedArrayToBST(nums []int) *TreeNode {
return process(nums, 0, len(nums)-1)
}
func process(nums []int, L int, R int) *TreeNode {
if L > R {
return nil
}
if L == R {
return &TreeNode{val: nums[L]}
}
M := (L + R) / 2
head := &TreeNode{val: nums[M]}
head.left = process(nums, L, M-1)
head.right = process(nums, M+1, R)
return head
}
执行结果如下:
公众号:福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2020-10-07 2020-10-07:redis存在线程安全的问题吗?为什么?