序列化以及反序列化二叉树
有些问题需要把二叉树序列化,可用于传输或者保存等,当然,有些题目也需要你去序列化以及反序列化,你懂的!
二叉树的定义如下:
package com.hbut.bean;public class TreeNode {private TreeNode left;private TreeNode right;private int val;public TreeNode(int val) {super();this.val = val;}public TreeNode getLeft() {return left;}public void setLeft(TreeNode left) {this.left = left;}public TreeNode getRight() {return right;}public void setRight(TreeNode right) {this.right = right;}public int getVal() {return val;}public void setVal(int val) {this.val = val;}}
二叉树的序列化以及反序列化如下:
package com.hbut.test;import com.hbut.bean.TreeNode;public class TestTree {//二叉树如下// 0// 1 2// 3 4//初始化树public static TreeNode initTree (){TreeNode root = new TreeNode(0);TreeNode one = new TreeNode(1);TreeNode two = new TreeNode(2);TreeNode three = new TreeNode(3);TreeNode four = new TreeNode(4);root.setLeft(one);root.setRight(two);one.setLeft(three);one.setRight(four);return root;}//先序遍历public static void preOrder(TreeNode root){if(root==null){return ;}System.out.print(root.getVal()+" ");preOrder(root.getLeft());preOrder(root.getRight());}//序列化二叉树public static String serialize(TreeNode root) { StringBuilder builder = new StringBuilder();if(root==null){return "#,";}builder.append(root.getVal()+",");builder.append(serialize(root.getLeft()));builder.append(serialize(root.getRight()));return builder.toString();}//反序列化二叉树static int index=-1;public static TreeNode Deserialize(String str) {String [] s=str.split(",");index++;TreeNode node=null;if(index<str.length()){if(!"#".equals(s[index])){node = new TreeNode(Integer.parseInt(s[index]));node.setLeft(Deserialize(str));node.setRight(Deserialize(str));}}return node;}public static void main(String[] args) {TreeNode root=initTree();System.out.print("先序遍历:");preOrder(root);//测试序列化以及反序列化二叉树String s=serialize(root);System.out.println();System.out.print("序列化二叉树:"+s);System.out.println();//反序列化二叉树System.out.print("反序列化二叉树后(先序遍历):");preOrder(Deserialize(s));}}
运行结果如下:
先序遍历:0 1 3 4 2
序列化二叉树:0,1,3,#,#,4,#,#,2,#,#,
反序列化二叉树后(先序遍历):0 1 3 4 2
序列化以及反序列化二叉树相关推荐
- c语言二叉树反序列化,序列化和反序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode ...
- 序列化和反序列化二叉树 -----前序,中序,后序,层序
目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...
- python代码实现二叉树的序列化和反序列化
python代码实现二叉树的序列化和反序列化 二叉树的序列化 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字 符串,从而使得内存中建立起来的二叉树可以持久保存. 二叉树的反序 ...
- 二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)
297. 二叉树的序列化与反序列化(剑指 Offer 37. 序列化二叉树)(剑指 Offer II 048. 序列化与反序列化二叉树) class Codec:def serialize(self, ...
- LeetCode——二叉树序列化与反序列化
文章目录 题目 思路 问题一 问题二 代码实现 题目 请实现两个函数,分别用来序列化和反序列化二叉树. 设计一个算法来实现二叉树的序列化与反序列化.不限定序列 / 反序列化算法执行逻辑,你只需要保证一 ...
- lintcode 7. 二叉树的序列化和反序列化 Python代码
'''7. 二叉树的序列化和反序列化 描述 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为"序列化",读取文件后重建同样的二叉树被称为"反序列化 ...
- java二叉树的序列化_二叉树的序列化和反序列化
import java.util.LinkedList; import java.util.Queue; /** * 序列化和反序列化二叉树 * 先序.后序 * (中序不能实现) * 按层 */ pu ...
- C++之二叉树的序列化与反序列化
问题 来源: LintCode7 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为"序列化",读取文件后重建同样的二叉树被称为"反序列化" ...
- 剑指offer:二叉树序列化与反序列化 - Python
转载自:https://blog.csdn.net/u010005281/article/details/79787278 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树. 解题思路 序列化 ...
最新文章
- C++编程进阶6(public继承与组合、private继承、多重继承、处理模板基类内的名称、如何避免模板代码膨胀)
- 让Web开发者事半功倍的8个网站
- linux 逻辑运算符and,布尔逻辑运算符
- RabbitMQ RPC远程调用模式
- oracle 之 安装10.2.0.1 且 升级到 10.2.0.4
- leetcode155|最小栈(java)题解
- 质因数分解(信息学奥赛一本通-T1098)
- 腾讯面试题: 百度搜索为什么那么快? | 原力计划
- 浅析几种数据集合(Dictionary、ArrayList、Hashtable和Array)的区别
- 求序列最长不下降子序列_树状数组解决最长不下降子序列 讲讲主要思路就好...
- 【渝粤教育】国家开放大学2018年秋季 0077-22T古代汉语专题 参考试题
- 企业数据安全防护不可忽视,数据丢失/损坏如何处理?
- 测试TF card 的读写速度
- 巴斯克维尔字体标本案例研究
- 用python祝福父亲节_父亲节送给父亲的祝福语,挑一句话发朋友圈!
- 什么是资产证券化 - 以及资产支持证券在实际中的应用
- 阿里云虚拟机 php $_SESSION 失效问题
- 项目实训(树莓派)(十四)树莓派4B下的ubuntu系统下的vim的使用
- 计算机应用基础搜题答案,2017计算机应用基础试题及答案
- macbook版ppt keynote 一些你不知道的小技巧
热门文章
- 为什么TCP连接要三次握手?
- ES集群新增节点无法加入集群 timed out while waiting for initial discovery state - timeout: 30s
- 【最详细】数据结构(C语言版 第2版)第八章课后习题答案 严蔚敏 等 编著
- redo日志写入为什么“俩阶段提交”
- ajax基本流程,AJAX基本流程
- 银行应用_讲解人脸识别在银行的应用
- java replaceall删除中括号和内容_「技术文章」《阿里巴巴 Java 开发手册》精华摘要...
- linux查看信息文件,lsof---Linux查看文件信息的强大工具
- 华为k662c的虚拟服务器,华为k662c路由器怎么设置
- php直销二叉树,PHP二叉树递归算法