题解 | 序列化二叉树

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def Serialize(self, root):
        # write code here
        if root is None:
            return "#"
        # 递归序列化左子树和右子树
        left = self.Serialize(root.left)
        right = self.Serialize(root.right)
        # 返回序列化后的字符串,用逗号分隔
        return str(root.val) + ',' + left + ',' + right

    def Deserialize(self, s):
        # write code here
        if s is None:
            return None
        nodes = s.split(',')

        def helper():
            nonlocal nodes
            # 如果列表为空,返回 None
            if not nodes:
                return None
            # 取出列表的第一个元素
            val = nodes.pop(0)
            # 如果元素为 "#",表示空节点
            if val == '#':
                return None
            # 创建当前节点
            node = TreeNode(int(val))
            # 递归构建左子树
            node.left = helper()
            # 递归构建右子树
            node.right = helper()
            return node
        return helper()
        # if s[0] == '#':
        #     cur_TreeNode = None
        #     return cur_TreeNode
        # else:
        #     cur_TreeNode = TreeNode(s[0])
        #     s.pop(0)
        #     if len(s) >=1:
        #         cur_TreeNode.left = self.Deserialize(s[1:])
        #     if len(s) >=2:    
        #         cur_TreeNode.right = self.Deserialize(s[2:])
        #     return cur_TreeNode

        
        

全部评论

相关推荐

计算机遨游小白:可能是后端没HC了,用前端的HC招
投递京东等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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