Golang | Leetcode Golang题解之第109题有序链表转换二叉搜索树

题目:

题解:

Go 复制代码
var globalHead *ListNode

func sortedListToBST(head *ListNode) *TreeNode {
    globalHead = head
    length := getLength(head)
    return buildTree(0, length - 1)
}

func getLength(head *ListNode) int {
    ret := 0
    for ; head != nil; head = head.Next {
        ret++
    }
    return ret
}

func buildTree(left, right int) *TreeNode {
    if left > right {
        return nil
    }
    mid := (left + right + 1) / 2
    root := &TreeNode{}
    root.Left = buildTree(left, mid - 1)
    root.Val = globalHead.Val
    globalHead = globalHead.Next
    root.Right = buildTree(mid + 1, right)
    return root
}
相关推荐
青 春 记 忆3 小时前
LeetCode 104. 二叉树的最大深度|Python 解法详解
python·算法·leetcode
骇客野人4 小时前
电商商城微服务架构设计方案(SpringCloud/Go+Vue3+MySQL+ES+RocketMQ)
spring cloud·微服务·golang
码农大叔的博客4 小时前
golang示例:for九九乘法表
开发语言·算法·golang
圣殿骑士-Khtangc5 小时前
Go-sync-Pool对象池最佳实践与源码分析
golang
互联网中的一颗神经元5 小时前
01. Go 内存管理全景架构
java·jvm·golang
有脚就行5 小时前
第24篇-Go-gRPC推理服务-高性能跨语言通信
开发语言·人工智能·后端·golang
evans在进步6 小时前
LeetCode 198:打家劫舍——Java 动态规划详解
java·leetcode·动态规划
Nil2086 小时前
leetcode 234回文链表
算法·leetcode·链表
ZC跨境爬虫7 小时前
LeetCode 119. 杨辉三角 II(原地更新优化详解 + Java Python 实现)
java·python·leetcode
吃着火锅x唱着歌7 小时前
LeetCode 3597.分割字符串
算法·leetcode·职场和发展