二叉树的序列化和反序列化
- 序列化: 给定二叉树,生成 先序、后序、BFS、DFS 序列
- 反序列化:给定先序、后序、BFS、DFS 序列, 生成二叉树
1. 序列化
1.1 先序序列化:
- 递归方法:
def Preorder_serialize(root):
return ['#'] if not root else [root.val] + Preorder_serialize(root.left) \
+ Preorder_serialize(root.right)
- 非递归方法:
def Preorder_serialize(root):
if not root:
return []
stack = []
p = root
re = []
while p or stack:
while p:
re.append(p.val) #打印
stack.append(p) #入栈
p = p.left
p = stack.pop(-1) # 出栈
p = p.right
return re
1.2 中序序列化:
- 递归方法
def Midorder_serialize(root):
return ['#'] if