题目内容
请实现两个函数,分别用来序列化和反序列化二叉树
题目思路
首先这道题目是要有两个问题,第一个是把一棵二叉树按照前序遍历的方式变成一个字符串。第二个是把一个字符串变成一个二叉树。对于第一个问题来说,我们要对这棵树进行一个前序遍历,按照中左右的方式放入列表中,如果节点为空,则插入#,最后.join(,)来实现列表到字符串的转换。第二个问题是我们采用了递归的方式来建立二叉树,分别是根节点,左节点和右节点,符合前序二叉树的简历方式,最后返回根节点即可。
程序代码
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Serialize(self, root):
# write code here
res=[]
def preorder(root):
if not root:#空节点
res.append('#')
else:
res.append(str(root.val))
preorder(root.left)
preorder(root.right)
preorder(root)
return ','.join(res)
def Deserialize(self, s):
# write code here
res=s.split(',')
def build():
if res:
tmp=res.pop(0)
if tmp=='#':
return None
else:
root=TreeNode(int(tmp))
root.left=build()
root.right=build()
return root
return build()