题解 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)

全部评论

相关推荐

找到实习就改名4月17日下午更改:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务