Python:序列化二叉树

来源:互联网 发布:浙江省纺织品出口数据 编辑:程序博客网 时间:2024/06/05 17:06


牛客网上的剑指 offer的在线编程:

题目描述
请实现两个函数,分别用来序列化和反序列化二叉树

class TreeNode:    def __init__(self, x):        self.val = x        self.left = None        self.right = Noneclass Solution:    def Serialize(self, root):        # write code here        tree, ch = [root], []        while len(tree) > 0:            temp = tree.pop(0)            if temp is None:                ch.append('#*')            else:                ch.append(str(temp.val) + '*')                tree.append(temp.left)                tree.append(temp.right)        return ''.join(ch)    def Deserialize(self, s):        # write code here        s1, i = s.split('*'), 0        if s1[i] == '#':            return None        root = TreeNode(int(s1[i]))        tree = [root]        while len(tree) > 0:            te = tree.pop(0)            i += 1            if s1[i] != '#':                k = TreeNode(int(s1[i]))                te.left = k                tree.append(k)            i += 1            if s1[i] != '#':                k = TreeNode(int(s1[i]))                te.right = k                tree.append(k)        return root


原创粉丝点击