题解 Python3 | #序列化二叉树#

序列化二叉树

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

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

SPLIT_CHAR = "_"
EMPTY_CHAR = "#"

class Solution:

    def __Encode__(self, root: TreeNode, data: list):
        if not root:
            data.append(EMPTY_CHAR + SPLIT_CHAR)
            return
        data.append(str(root.val) + SPLIT_CHAR)
        self.__Encode__(root.left , data)      
        self.__Encode__(root.right, data)

    def __Decode__(self, data: list):
        if not data:
            return
        val = data.pop(0)
        if val == EMPTY_CHAR:
            return 
        root = TreeNode(int(val))
        root.left  = self.__Decode__(data)
        root.right = self.__Decode__(data)
        return root

    def Serialize(self, root) -> str:
        # write code here
        data: list = []
        self.__Encode__(root, data)
        return "".join(data)

    def Deserialize(self, s):
        # write code here
        datas = s.split(SPLIT_CHAR)
        return self.__Decode__(datas)

全部评论

相关推荐

03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务