树-----二叉树的序列化和反序列化
Posted lee-yl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树-----二叉树的序列化和反序列化相关的知识,希望对你有一定的参考价值。
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
以上是关于树-----二叉树的序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章