题解 | #序列化二叉树#

序列化二叉树

https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

关键点: 
1 理解题目,只需要将一个root先序列化,然后再反序列化,序列化的结果不作要求
2 使用同样的前序遍历,在反序列化时,要注意,self.index必须是全局共享的,这样才能保证按照顺序构建



# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def __init__(self):
        self.index = 0
        self.s = ""
    def SerializeFunction(self, root):
        #空节点
        if not root:
            self.s += '#'
            return
        #根节点
        self.s += (str)(root.val) + '!'
        #左子树
        self.SerializeFunction(root.left)
        #右子树
        self.SerializeFunction(root.right)
     
    def Serialize(self, root):
        if not root:
            return '#'
        self.SerializeFunction(root)
        return self.s

    def DeserializeFunction(self, s):
        if self.index == len(s) or s[self.index] == '#':
            self.index += 1
            return
        val = 0
        while self.index<len(s) and s[self.index] != '!':
            val = val * 10 + int(s[self.index])
            self.index += 1
        root = TreeNode(val)
        if self.index == len(s):
            return root
        else:
            self.index += 1
        root.left = self.DeserializeFunction(s)
        root.right = self.DeserializeFunction(s)
        return root

    def Deserialize(self, s):
        if s == '#': return 
        root = self.DeserializeFunction(s)
        return root

全部评论

相关推荐

06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务