二叉树问题---二叉树的序列化和反序列化
来源:互联网 发布:ios用什么数据库 编辑:程序博客网 时间:2024/05/24 07:37
说明:
二叉树被记录成文件的过程叫作二叉树的序列化,通过文件内容重建原来二叉树的过程叫作二叉树的反序列化
#二叉树的序列化和反序列化(先序)def serialByPre(root): if not root: return '#!' res = root.val + '!' res += serialByPre(root.left) res += serialByPre(root.right) return resdef reconByPreString(preStr): def reconPreOrder(values): key = values.pop(0) if key == '#': return None root = TreeNode(key) root.left = reconPreOrder(values) root.right = reconPreOrder(values) return root values = preStr.split('!') return reconPreOrder(values)#二叉树的序列化和反序列化(层次)def serialByLevel(root): if root == '#': return '#!' stack = [] stack.append(root) res = root.val + '!' while stack: root = stack.pop() if root.left: res += root.left.val + '!' stack.append(root.left) else: res += '#!' if root.right: res += root.right.val + '!' stack.append(root.right) else: res += '#!' return resdef reconByLevelString(levStr): def generateNode(key): if key == '#': return None return TreeNode(key) values = levStr.split('!') head = generateNode(values.pop(0)) queue = [] if head: queue.append(head) while queue: root = queue.pop(0) root.left = generateNode(values.pop(0)) root.right = generateNode(values.pop(0)) if root.left: queue.append(root.left) if root.right: queue.append(root.right) return head
阅读全文
2 0
- 二叉树问题---二叉树的序列化和反序列化
- 【二叉树】二叉树序列化和反序列化
- 题目:二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉搜索树的序列化和反序列化
- 二叉树的序列化和反序列化
- lintcode,二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 二叉树问题---较为直观的打印二叉树
- java8 lambda表达式在集合中的应用
- 二叉树问题---打印二叉树的边界节点
- POJ 2992 Divisors
- RHCE——控制服务和守护进程
- 二叉树问题---二叉树的序列化和反序列化
- 将十进制数转化为二进制数
- 杭电acm1201过生日
- CSS定位
- JAVA中字符串比较equals()和equalsIgnoreCase()的区别
- Codeforces Round #426 (Div. 2) C. The Meaningless Game
- AVL树
- 我站在大一的边缘,望向大二。
- 支付宝红包口令(2015 阿里笔试)