1.把樹序列爲字符串可以看成遞歸,先序遍歷
2.碰到空指針變爲特殊字符$
3.反序列化時,直接按照‘,’號分隔開
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
flag = -1
def Serialize(self, root):
s = ""
s = self.recursionSerialize(root, s)
return s
def recursionSerialize(self, root, s):
if root is None:
s = '$,'
return s
s = str(root.val) + ','
left = self.recursionSerialize(root.left, s)
right = self.recursionSerialize(root.right, s)
s += left + right
return s
def Deserialize(self, s):
self.flag += 1
l = s.split(',')
if self.flag >= len(s):
return None
root = None
if l[self.flag] != '$':
root = TreeNode(int(l[self.flag]))
root.left = self.Deserialize(s)
root.right = self.Deserialize(s)
return root