您的位置:首页 > 其它

请实现两个函数,分别用来序列化和反序列化二叉树

2019-06-05 21:29 225 查看
  1. 对于序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点不为空时,在转化val所得的字符之后添加一个’ , '作为分割。对于空节点则以 ‘#’ 代替。
  2. 对于反序列化:按照前序顺序,递归的使用字符串中的字符创建一个二叉树
# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def __init__(self):
        self.cur = -1
    def Serialize(self, root):
        # write code here
        if not root:
            return '#'
        return str(root.val) + ',' + self.Serialize(root.left) + ',' + self.Serialize(root.right)
    def Deserialize(self, s):
        # write code here
        self.cur += 1
        l = s.split(',')
        if self.cur>=len(s):
            return None
        root = None
        if l[self.cur]!='#':
            root = TreeNode(int(l[self.cur]))
            root.left = self.Deserialize(s)
            root.right = self.Deserialize(s)
        return root
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐