题解 | #序列化二叉树#

序列化二叉树

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

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#这道题里的序列化和反序列化都用的递归,思路比较简单。序列化用的前序遍历;反序列化根据前序遍历的顺序,依次处理root、左子树和右子树
class Solution:
    def __init__(self):
        self.split_s=[]
    def Serialize(self, root):
        # write code here
        if not root:
            return "#,"
        return str(root.val)+","+self.Serialize(root.left)+self.Serialize(root.right)


    def Deserialize(self, s):
        if s==None:
            return None
        if s=="#":
            return None
        self.split_s=s.split(',')
        return self.construct()


    def construct(self):
        if self.split_s[0]=="#":
            self.split_s=self.split_s[1:]
            return None
        node=TreeNode(int(self.split_s[0]))
        node.left=None
        node.right=None
        self.split_s=self.split_s[1:]
        node.left=self.construct()
        node.right=self.construct()

        return node

        # write code here
全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务