序列化以及反序列化二叉树
来源:互联网 发布:mac版的ps怎么破解 编辑:程序博客网 时间:2024/06/06 01:12
有些问题需要把二叉树序列化,可用于传输或者保存等,当然,有些题目也需要你去序列化以及反序列化,你懂的!
二叉树的定义如下:
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//12//34//初始化树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
阅读全文
0 0
- 序列化以及反序列化二叉树
- 序列化/反序列化二叉树
- 序列化/反序列化二叉树
- 序列化/反序列化二叉树
- 序列化/反序列化二叉树
- 序列化反序列二叉树
- 二叉树------序列化与反序列化二叉树
- 【二叉树】二叉树序列化和反序列化
- 44.序列化二叉树,反序列化二叉树
- 二叉树的序列化与反序列化
- 二叉树的序列化与反序列化
- 序列化和反序列化二叉树
- 题目:二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 前序序列化/反序列化二叉树
- 二叉树的序列化与反序列化
- 二叉树的序列化和反序列化
- 二叉树的序列化和反序列化
- 第七届山东省赛 Feed the monkey(dp)
- linux下 javaweb 运行tomcat服务器 server name无法自动填充问题
- CodeForces
- 游戏策划游戏研发必读经典题文五
- typedef void fun(void)
- 序列化以及反序列化二叉树
- 海量数据处理的top K个数的问题
- 数据库索引实现底层原理2
- Andorid布局简单介绍
- win32学习04.Windows字符编码
- Mysql编码修改
- Redis 链表
- 游戏随想——杂记
- 计算之道第五场