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()
}
相关推荐
qq_172805591 小时前
Go 语言 PDF 生成库综合比较与实践指南
开发语言·golang·pdf
1白天的黑夜13 小时前
栈-1047.删除字符串中的所有相邻重复项-力扣(LeetCode)
c++·leetcode·
im_AMBER3 小时前
Leetcode 18 java
java·算法·leetcode
愚润求学4 小时前
【贪心算法】day9
c++·算法·leetcode·贪心算法
Sally璐璐5 小时前
Go组合式继承:灵活替代方案
开发语言·后端·golang
gou123412345 小时前
Go语言io.Copy深度解析:高效数据复制的终极指南
开发语言·golang·php
songx_998 小时前
leetcode29( 有效的括号)
java·数据结构·算法·leetcode
像风一样自由20208 小时前
Go语言详细指南:特点、应用场景与开发工具
开发语言·后端·golang
东方芷兰10 小时前
Leetcode 刷题记录 21 —— 技巧
java·算法·leetcode·职场和发展·github·idea
爱编程的化学家14 小时前
代码随想录算法训练营第六天 - 哈希表2 || 454.四数相加II / 383.赎金信 / 15.三数之和 / 18.四数之和
数据结构·c++·算法·leetcode·双指针·哈希