剑指offer(64):序列化二叉树
来源:互联网 发布:淘宝双十一价格规则 编辑:程序博客网 时间:2024/06/18 06:03
题目描述
请实现两个函数,分别用来序列化和反序列化二叉树。
分析
如果二叉树的序列化是从根节点开始,那么对应的而反序列化也是从根节点开始的。因此可以使用二叉树的前序遍历来序列化二叉树,当前序遍历碰到null值是,使用“#”表示,每一个节点的数值之间用“,”隔开。
牛客AC:
/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public int index = -1; // 节点在序列中的索引 /** * 序列化 * 前序遍历,将二叉树节点的值转为字符序列,null转为“#” * * @param root * @return */ String Serialize(TreeNode root) { StringBuffer s = new StringBuffer(); if (root == null) { s.append("#,"); return s.toString(); } s.append(root.val + ","); s.append(Serialize(root.left)); s.append(Serialize(root.right)); return s.toString(); } /** * 反序列化 * * @param str * @return */ TreeNode Deserialize(String str) { index++; int length = str.length(); if (index >= length) { return null; } String[] nodeSeq = str.split(","); TreeNode pNode = null; if (!nodeSeq[index].equals("#")) { pNode = new TreeNode(Integer.valueOf(nodeSeq[index])); pNode.left = Deserialize(str); pNode.right = Deserialize(str); } return pNode; }}
参考
1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社
0 0
- 剑指offer(64):序列化二叉树
- 剑指offer--序列化二叉树
- 《剑指offer》序列化二叉树
- 剑指offer—序列化二叉树
- [剑指offer]序列化二叉树
- 《剑指offer》:[62]序列化二叉树
- 剑指Offer--062-序列化二叉树
- 剑指offer-序列化二叉树
- 剑指offer 序列化二叉树
- 【剑指Offer】序列化二叉树
- 剑指offer 序列化二叉树
- 16.剑指offer-序列化二叉树
- 《剑指offer》序列化二叉树
- 剑指offer--序列化二叉树
- 剑指offer-序列化二叉树
- 剑指offer--序列化二叉树
- 剑指offer:序列化二叉树
- 剑指offer—序列化二叉树
- NSDictionary转NSData【相互转换】
- HTTP请求
- iOS - 距离传感器
- apache+jkmount+tomcat
- HDOJ-5677 ztr loves substring
- 剑指offer(64):序列化二叉树
- ZOJ 3195(LCA模板)
- JVM指令集(指令码、助记符、功能描述)
- 树T1交换其(某些)左右节点的左右儿子变换成树T2,则是同构。给出一个多项式时间算法以决定是否两棵树同构
- zzu 10467: 控制食欲 --01背包
- 【CI学习笔记】引入jquery,以及文件夹结构的改变
- tomcat和apache连接器mod_jk (Tomcat Connectors)
- dubbo 运行时候找不到.ioc 文件
- Maple OpenMaple (API) 开发系列-1.0 概述