Golang | Leetcode Golang题解之第297题二叉树的序列化与反序列化

题目:

题解:

Go 复制代码
type Codec struct{}

func Constructor() (_ Codec) {
    return
}

func (c Codec) serialize(root *TreeNode) string {
    if root == nil {
        return "X"
    }
    left := "(" + c.serialize(root.Left) + ")"
    right := "(" + c.serialize(root.Right) + ")"
    return left + strconv.Itoa(root.Val) + right
}

func (Codec) deserialize(data string) *TreeNode {
    var parse func() *TreeNode
    parse = func() *TreeNode {
        if data[0] == 'X' {
            data = data[1:]
            return nil
        }
        node := &TreeNode{}
        data = data[1:] // 跳过左括号
        node.Left = parse()
        data = data[1:] // 跳过右括号
        i := 0
        for data[i] == '-' || '0' <= data[i] && data[i] <= '9' {
            i++
        }
        node.Val, _ = strconv.Atoi(data[:i])
        data = data[i:]
        data = data[1:] // 跳过左括号
        node.Right = parse()
        data = data[1:] // 跳过右括号
        return node
    }
    return parse()
}
相关推荐
Wy_编程9 分钟前
go语言中的结构体
开发语言·后端·golang
lolo大魔王3 小时前
Go 后端实战|Gin + GORM V2 + MySQL 企业级 API 项目开发(完整版)
mysql·golang·gin
XMYX-03 小时前
28 - Go JSON 数据操作
开发语言·golang·json
敲代码的嘎仔7 小时前
力扣高频SQL基础50题详解
开发语言·数据库·笔记·sql·算法·leetcode·后端开发
jieyucx7 小时前
Go 语言核心关键字:defer 深度解析与实战避坑
开发语言·后端·golang·defer
洛水水9 小时前
【力扣100题】46.单词拆分
算法·leetcode·职场和发展
Wy_编程10 小时前
Go语言中的指针
开发语言·后端·golang
lolo大魔王11 小时前
Go语言数据库操作之GORM框架从入门到生产实战(完整版)
开发语言·数据库·golang
alphaTao11 小时前
LeetCode 每日一题 2026/5/11-2026/5/17
算法·leetcode
洛水水11 小时前
【力扣100题】45.零钱兑换
算法·leetcode·职场和发展