请实现两个函数,分别用来序列化和反序列化二叉树
2019-06-05 21:29
225 查看
- 对于序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点不为空时,在转化val所得的字符之后添加一个’ , '作为分割。对于空节点则以 ‘#’ 代替。
- 对于反序列化:按照前序顺序,递归的使用字符串中的字符创建一个二叉树
# -*- 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
相关文章推荐
- 请实现两个函数,分别用来序列化和反序列化二叉树
- 请实现两个函数,分别用来序列化和反序列化二叉树
- 1.写一个函数返回参数二进制中1的个数2.获取一个数二进制序列中所有的偶数为和奇数位,分别输出二进序列3.输出一个整数的每一位4.编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(b
- Python3实现二叉树的序列化和反序列化
- 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
- 由反序列化二叉树实现函数引起的二叉树节点递归调用问题
- 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
- 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
- 数据结构与算法分析笔记与总结(java实现)--二叉树4:二叉树的序列化和反序列化练习题
- 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。
- 分别用两个函数实现的菜单
- Java:定义五个函数,分别实现①计算数组的最大值MAX②最小值MIN③数组和SUM④拼接两个数组a和b⑤截取a数组的一部分
- 将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。
- 实现两个函数,分别完成数组元素的插入和删除操作
- 二叉树的序列化和反序列化java借助队列实现
- 二叉树的序列化和反序列化实现(C++)
- 分别用两个函数实现的菜单
- 题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能
- JAXB主要用来实现对象和XML之间的序列化和反序列化