题解 | #序列化二叉树#

序列化二叉树

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

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def __init__(self) -> None:
        self.index = 0
        self.s = ''

    def func1(self, root):
        if  not root:
            self.s += '#'
            return 
        self.s += str(root.val) + '!'  
        self.func1(root.left)
        self.func1(root.right)

    def Serialize(self, root):
        self.s = ''
        if not root:
            return '#'
        self.func1(root)
        return self.s 

    def func2(self, s):
        if self.index >= len(s) or s[self.index] == '#':
            self.index += 1
            return None

        num = 0
        while s[self.index] != '!' or self.index >= len(s):
            num = num*10 + int(s[self.index])
            self.index += 1
        node = TreeNode(num)
        if self.index == len(s):
            return node
        else:
            self.index += 1
        node.left = self.func2(s)
        node.right = self.func2(s)
        return node
            
    def Deserialize(self, s):
        if s == '#':
            return None
        return self.func2(s)






全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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