题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Serialize(self, root):
u"把对象转换为字节序列的过程称为对象的序列化"
# write code here
def Pre_Order(root):
if root:
result.append(str(root.val))
Pre_Order(root.left)
Pre_Order(root.right)
else:
result.append("#")
result = []
Pre_Order(root)
return ",".join(result)
def Deserialize(self, s):
u"把字节序列恢复为对象的过程称为对象的反序列化"
# write code here
s = s.split(",")
def Change(num):
num[0] += 1
if num[0] < len(s):
if s[num[0]] == "#":
return None
root = TreeNode(int(s[num[0]]))
root.left = Change(num)
# 传递的num是列表而不是一个变量,如果是变量的话在上面的这条语句执行完以后num并没有记录上一步执行时的加1
root.right = Change(num)
return root
else:
return None
num= [-1]
return Change(num)