首页 > 其他 > 详细

树(7)-----二叉树的序列化和反序列化

时间:2018-07-01 15:41:44      阅读:160      评论:0      收藏:0      [点我收藏+]

1、序列化:层次遍历【用字符串来存储】

2、反序列化:用队列存已经建立的节点,从序列化后的字符串列表取数来建立树

    def serialize(self, root):
        """Encodes a tree to a single string.
        
        :type root: TreeNode
        :rtype: str
        """
        if not root:
            return ""
        prev,strres=[root],""
        while prev:
            cur=[]
            while prev:
                node=prev.pop(0)
                if node:
                    strres+=str(node.val)+,
                    cur.append(node.left)
                    cur.append(node.right)
                else:
                    strres+=#+,
            prev=cur
        return strres[:-1]
        

    def deserialize(self, data):
        """Decodes your encoded data to tree.
        
        :type data: str
        :rtype: TreeNode
        """
        if not data:
            return None
        listdata=data.split(,)
        root=TreeNode(listdata[0])
        queue=[root]
        i=0
        while queue:
            node=queue.pop(0)
            if listdata[i+1]!=#:
                node.left=TreeNode(listdata[i+1])
                queue.append(node.left)
            i+=1
            if listdata[i+1]!=#:
                node.right=TreeNode(listdata[i+1])
                queue.append(node.right)
            i+=1
        return root

 

树(7)-----二叉树的序列化和反序列化

原文:https://www.cnblogs.com/Lee-yl/p/9250242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!