class TreeNode(object):
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class Solution(object):
def creatTree(self):
t = TreeNode(1)
t.left = TreeNode(2)
t.right = TreeNode(3)
t.left.left = TreeNode(4)
t.right.left = TreeNode(5)
t.right.right = TreeNode(6)
return t
def serialize(self, root):
res = []
def pre(root):
if root:
res.append(root.val)
pre(root.left)
pre(root.right)
else:
res.append("#")
pre(root)
return str(res)
def deserialized(self, data):
import json
data = json.loads(data)
def build():
if data:
val = data.pop(0)
if val == "#":
return None
root = TreeNode(val)
root.left = build()
root.right = build()
return root
return build()
def chengci(self, root):
res = []
stack = [root]
while stack:
r = stack.pop(0)
if r:
res.append(r.val)
stack.append(r.left)
stack.append(r.right)
else:
res.append("#")
return res
def dechengci(self, data):
import json
rstack = []
data = json.loads(data)
if data:
new = TreeNode(data.pop(0))
res = new
rstack.append(res)
while data:
r = rstack.pop(0)
if data:
d = data.pop(0)
if d:
r.left = TreeNode(d)
rstack.append(r.left)
if data:
d = data.pop(0)
if d:
r.right = TreeNode(d)
rstack.append(r.right)
return res
s = Solution()
data = '[1,2,4,"#","#","#",3,5,"#","#",6,"#","#"]'
tree = s.deserialized(data)
string = s.serialize(tree)
print(string)
string = s.chengci(tree)
print(string)
print("----------------------------------------------------")
tree = s.creatTree()
string = s.serialize(tree)
print(string)