题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。
1 class Solution: 2 def Serialize(self, root): 3 # write code here 4 retList = [] 5 def preOrder(root): 6 if root == None: 7 retList.append("#") 8 return 9 retList.append(str(root.val)) 10 preOrder(root.left) 11 preOrder(root.right) 12 preOrder(root) 13 return ' '.join(retList) 14 def Deserialize(self, s): 15 # write code here 16 retList = s.split() 17 def dePreOrder(): 18 if retList == []: 19 return None 20 rootVal = retList[0] 21 del retList[0] 22 if rootVal == "#": 23 return None 24 node = TreeNode(int(rootVal)) 25 leftNode = dePreOrder() 26 rightNode = dePreOrder() 27 node.left = leftNode 28 node.right = rightNode 29 return node 30 pRoot = dePreOrder() 31 return pRoot
2020-01-01 19:34:24