请实现两个函数,分别用来序列化和反序列化二叉树
可以用前序遍历来序列化二叉树,反序列化的时候其实就是一步步将小树变成大树。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.index = -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.index += 1
l = s.split(',')
root = None
if self.index >= len(s):
return None
if l[self.index] != '#':
root = TreeNode(int(l[self.index]))
root.left = self.Deserialize(s)
root.right = self.Deserialize(s)
return root
也可以用层次遍历来序列化,序列化和反序列化都利用队列进行操作。