题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
时间限制:1秒;空间限制:32768K
解题思路
序列化指的是根据前序遍历规则遍历二叉树为字符串;反序列化指的是根据前序遍历规则依据字符串重新构造成二叉树。
并且当在遍历二叉树碰到Null指针时,这些Null指针被序列化为一个特殊的字符 “#”。
本题可采用递归思路求解。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.flag = -1
def Serialize(self, root):
# write code here
if root==None:
return '#,'
return str(root.val)+','+self.Serialize(root.left)+self.Serialize(root.right)
def Deserialize(self, s):
# write code here
self.flag += 1
l = s.split(',')
if self.flag >= len(s):
return None
root = None
# 遇到为空的元素,输出None跳出递归
if l[self.flag] != '#':
root = TreeNode(int(l[self.flag]))
root.left = self.Deserialize(s)
root.right = self.Deserialize(s)
return root