剑指offer系列35----序列化二叉树
【题目】
* 请实现两个函数,分别用来序列化和反序列化二叉树
* 1
/ \
2 3
/\ /\
4 5 6 7
*
* 序列化的结果是1,2,#,#,3,4,#,7,#,#,5,#,#,。
* 而反序列化的结果则是输出一棵二叉树。
package com.exe7.offer; /**
* 请实现两个函数,分别用来序列化和反序列化二叉树
* 1
/ \
2 3
/\ /\
4 5 6 7
*
* 序列化的结果是1,2,#,#,3,4,#,7,#,#,5,#,#,。
* 而反序列化的结果则是输出一棵二叉树。
* @author WGS
*
*/
public class SerializeBiTree {
static class TreeNode{
int val=0;
TreeNode left=null;
TreeNode right=null;
TreeNode next=null;
public TreeNode(int val){
this.val=val;
}
} //序列化 前序
public String serialize(TreeNode pRoot){ StringBuilder sb=new StringBuilder();
if(pRoot==null){
sb.append("#,");
return sb.toString();
}
sb.append(pRoot.val+",");
sb.append(serialize(pRoot.left));
sb.append(serialize(pRoot.right));
return sb.toString(); }
//反序列化 相当于创建二叉树的过程
int p=-1;
public TreeNode deSerialize(String strIn){
p++;
if(p>strIn.length())
return null;
String[] strArr=strIn.split(",");
TreeNode node=null;
if(!strArr[p].equals("#")){
node=new TreeNode(Integer.valueOf(strArr[p]));
node.left=deSerialize(strIn);
node.right=deSerialize(strIn);
}
return node; }
public void preOrder(TreeNode node){
if(node==null) return;
System.out.print(node.val+" ");
preOrder(node.left);
preOrder(node.right);
}
public static void main(String[] args) {
SerializeBiTree s=new SerializeBiTree(); //反序列化
String strIn=("1,2,#,#,3,4,#,7,#,#,5,#,#,");
TreeNode tempNode=s.deSerialize(strIn);
s.preOrder(tempNode);//前序遍历 System.out.println("------------------------");
//序列化 结果: 1,2,4,#,#,5,#,#,3,6,#,#,7,#,#,
/*
1
/ \
2 3
/\ /\
4 5 6 7
* */
TreeNode root=new TreeNode(1);
TreeNode node1=new TreeNode(2);
TreeNode node2=new TreeNode(3);
TreeNode node3=new TreeNode(4);
TreeNode node4=new TreeNode(5);
TreeNode node5=new TreeNode(6);
TreeNode node6=new TreeNode(7);
root.left=node1;//
root.right=node2;//
node1.left=node3;//
node1.right=node4;//
node2.left=node5;//
node2.right=node6;// String str=s.serialize(root);
System.out.println(str);
} }
剑指offer系列35----序列化二叉树的更多相关文章
- 剑指offer系列32-----对称二叉树的判断
[题目]请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. package com.exe7.offer; /** * [题目]请实现一个函 ...
- 《剑指offer》:[62]序列化二叉树
题目:请实现两个函数,分别来序列化和反序列化二叉树. 方案分析:我们知道通过二叉树的中序和任何一个前或者后续遍历都可以反序列化一棵二叉树,但是这样做有一个缺点就是,序列化的数据不能有重复的数据,否则会 ...
- 干货 | 剑指offer系列文章汇总
下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现 剑指offer系列 始 剑指offer—灯管问题(1) 剑指offer—10人电梯(2) ...
- 剑指Offer - 九度1521 - 二叉树的镜像
剑指Offer - 九度1521 - 二叉树的镜像2013-11-30 23:32 题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入 ...
- 剑指Offer - 九度1368 - 二叉树中和为某一值的路径
剑指Offer - 九度1368 - 二叉树中和为某一值的路径2013-11-23 03:46 题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结 ...
- 剑指Offer - 九度1350 - 二叉树的深度
剑指Offer - 九度1350 - 二叉树的深度2013-11-23 00:54 题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的 ...
- 剑指Offer:对称的二叉树【28】
剑指Offer:对称的二叉树[28] 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 题目分析 Java题解 /* publi ...
- [剑指 Offer 28. 对称的二叉树]
剑指 Offer 28. 对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / ...
- 剑指Offer(四):重建二叉树
说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...
- 【Java】 剑指offer(28) 对称的二叉树
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它 ...
随机推荐
- dedecms内容页调用缩略图 缩略图多种用法(借鉴)
文章内容页调用缩略图方法如下两种.第一种没有大小设置.原图显示.第二种.可以设大小, (1) {dede:field.image/} (2)<img src="{dede:field. ...
- java 中的几种 "通用方法“
前言 Java中,除了基本的数值类型,其他所有数据类型(包括数组)都是对象. 而Object这个类是所有类的超类,它提供的方法,自然能够使用于它的所有子类(所有非基本数值类型). 本文介绍了Objec ...
- Linux ---pptpd部署
PPTP 全称为 Point to Point Tunneling Protocol -- 点到点隧道协议,是VPN协议中的一种. 一.CentOS 6.2 下 PPTP VPN 服务器安装 1.安装 ...
- Apache HttpClient使用之阻塞陷阱
前言: 之前做个一个数据同步的定时程序. 其内部集成了某电商的SDK(简单的Apache Httpclient4.x封装)+Spring Quartz来实现. 原本以为简单轻松, 喝杯咖啡就高枕无忧的 ...
- dede模版列表调用文章正文内容的方法
在制作织梦模板的时候,有的时候我们需要调用文章部分内容,用[field:description/]标签字数不够多(数据库设计字段是varchar(255)的),另外修改了文章内容但是摘要还需要手动修改 ...
- 应用上下文配置【AppConfig】
从spring3.0开始,Spring将JavaConfig整合到核心模块,普通的POJO只需要标注@Configuration注解,就可以成为spring配置类,并通过在方法上标注@Bean注解的方 ...
- C++ Primer:第七章:类
定义一个类: class Myclass{ int data_i; string data_str; public: int getdata_i() const { return data_i; } ...
- zBoot/Makefile
#上层makefile调用执行make命令,执行的应该是第一个目标allHEAD = head.oSYSTEM = ../tools/zSystem#LD = gcc#TEST = -DTEST_DR ...
- Codeforces Round #143 (Div. 2)
A. Team 模拟. B. Magic, Wizardry and Wonders 可以发现\[d=a_1-a_2+a_3-a_4+\cdots\] 那么有\(odd=\lfloor \frac{n ...
- ed编辑器使用
evilxr@IdeaPad:/tmp$ ed aa.c 0 a enter another words hello nice www.evilxr.com . w aa.c 46 q a 表示添加内 ...