有些问题需要把二叉树序列化,可用于传输或者保存等,当然,有些题目也需要你去序列化以及反序列化,你懂的!

二叉树的定义如下:

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

序列化以及反序列化二叉树相关推荐

  1. c语言二叉树反序列化,序列化和反序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode ...

  2. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

  3. python代码实现二叉树的序列化和反序列化

    python代码实现二叉树的序列化和反序列化 二叉树的序列化 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字 符串,从而使得内存中建立起来的二叉树可以持久保存. 二叉树的反序 ...

  4. 二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)

    297. 二叉树的序列化与反序列化(剑指 Offer 37. 序列化二叉树)(剑指 Offer II 048. 序列化与反序列化二叉树) class Codec:def serialize(self, ...

  5. LeetCode——二叉树序列化与反序列化

    文章目录 题目 思路 问题一 问题二 代码实现 题目 请实现两个函数,分别用来序列化和反序列化二叉树. 设计一个算法来实现二叉树的序列化与反序列化.不限定序列 / 反序列化算法执行逻辑,你只需要保证一 ...

  6. lintcode 7. 二叉树的序列化和反序列化 Python代码

    '''7. 二叉树的序列化和反序列化 描述 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为"序列化",读取文件后重建同样的二叉树被称为"反序列化 ...

  7. java二叉树的序列化_二叉树的序列化和反序列化

    import java.util.LinkedList; import java.util.Queue; /** * 序列化和反序列化二叉树 * 先序.后序 * (中序不能实现) * 按层 */ pu ...

  8. C++之二叉树的序列化与反序列化

    问题 来源: LintCode7 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为"序列化",读取文件后重建同样的二叉树被称为"反序列化" ...

  9. 剑指offer:二叉树序列化与反序列化 - Python

    转载自:https://blog.csdn.net/u010005281/article/details/79787278 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树. 解题思路 序列化 ...

最新文章

  1. C++编程进阶6(public继承与组合、private继承、多重继承、处理模板基类内的名称、如何避免模板代码膨胀)
  2. 让Web开发者事半功倍的8个网站
  3. linux 逻辑运算符and,布尔逻辑运算符
  4. RabbitMQ RPC远程调用模式
  5. oracle 之 安装10.2.0.1 且 升级到 10.2.0.4
  6. leetcode155|最小栈(java)题解
  7. 质因数分解(信息学奥赛一本通-T1098)
  8. 腾讯面试题: 百度搜索为什么那么快? | 原力计划
  9. 浅析几种数据集合(Dictionary、ArrayList、Hashtable和Array)的区别
  10. 求序列最长不下降子序列_树状数组解决最长不下降子序列 讲讲主要思路就好...
  11. 【渝粤教育】国家开放大学2018年秋季 0077-22T古代汉语专题 参考试题
  12. 企业数据安全防护不可忽视,数据丢失/损坏如何处理?
  13. 测试TF card 的读写速度
  14. 巴斯克维尔字体标本案例研究
  15. 用python祝福父亲节_父亲节送给父亲的祝福语,挑一句话发朋友圈!
  16. 什么是资产证券化 - 以及资产支持证券在实际中的应用
  17. 阿里云虚拟机 php $_SESSION 失效问题
  18. 项目实训(树莓派)(十四)树莓派4B下的ubuntu系统下的vim的使用
  19. 计算机应用基础搜题答案,2017计算机应用基础试题及答案
  20. macbook版ppt keynote 一些你不知道的小技巧

热门文章

  1. 为什么TCP连接要三次握手?
  2. ES集群新增节点无法加入集群 timed out while waiting for initial discovery state - timeout: 30s
  3. 【最详细】数据结构(C语言版 第2版)第八章课后习题答案 严蔚敏 等 编著
  4. redo日志写入为什么“俩阶段提交”
  5. ajax基本流程,AJAX基本流程
  6. 银行应用_讲解人脸识别在银行的应用
  7. java replaceall删除中括号和内容_「技术文章」《阿里巴巴 Java 开发手册》精华摘要...
  8. linux查看信息文件,lsof---Linux查看文件信息的强大工具
  9. 华为k662c的虚拟服务器,华为k662c路由器怎么设置
  10. php直销二叉树,PHP二叉树递归算法