栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二叉树的序列化与反序列化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树的序列化与反序列化

将内存中一棵树变成字符串的形式,然后再将这一段字符串变成一棵树。

可以说就是讲遍历一遍后的结果用一个字符串保存下来。

可以使用先序遍历、中序遍历、后序遍历、层序遍历都行。

	//序列化一个二叉树
	public static String NodeToString(NodeTwo head) {
		if(head == null) {
			return "#_";
		}
		String s = head.value+"_";
		s += NodeToString(head.left);
		s += NodeToString(head.right);
		
		return s;
		
		
	}
	//将链表拆分成一个String类型数组,然后再存到队列里面。
	public static NodeTwo reconByPreString(String s) {
		
		String[] sp = s.split("_");
		Queue queue = new linkedList();
		for(String string:sp) {
			queue.add(string);
		}
		return reconPreOrder(queue);
	}
	//从队列中取出节点,建立二叉树
	public static NodeTwo reconPreOrder(Queue queue) {
		String s = queue.poll();
		if(s.equals("#")) {
			return null;
		}
		//因为是先序遍历的序列化,所以是按照中左右的顺序来的。
		NodeTwo head = new NodeTwo(Integer.valueOf(s));
		head.left = reconPreOrder(queue);
		head.right = reconPreOrder(queue);
		
		return head;
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号