序列化二叉树
来源:互联网 发布:如何用淘宝内部券赚钱 编辑:程序博客网 时间:2024/05/16 19:37
题目:
请实现两个函数,分别用来序列化和反序列化二叉树
思路:
序列化思路:
如果二叉树的序列化是从根节点开始的话,那么相应的反序列化在根节点的数值对出来的时候就可以开始了,因此我们可以根据前序遍历的的根节点数值在读出来的时候就可以开始了,因此我们可以根据前序遍历的顺序来序列化二叉树,因为前序遍历是从根节点开始的。当在遍历二叉树碰到NULL指针时,这些NULL指针序列化成一个特殊的字符(比如‘$’)。另外,节点的数字之间要用一个特殊字符(‘,’)隔开。–《剑指offer》
反序列化:根据序列化得到的序列重建二叉树
代码:
/*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;//反序列化时,遍历数组的下标 String Serialize(TreeNode root) { StringBuilder sb = new StringBuilder(); if(root == null){ sb.append("$,"); return sb.toString(); } sb.append(root.val+","); sb.append(Serialize(root.left)); sb.append(Serialize(root.right)); return sb.toString(); } TreeNode Deserialize(String str) { int length = str.length(); String [] strArray = str.split(","); ++index; if(index >= length){ return null; } TreeNode pRoot = null; if(!strArray[index].equals("$")){ pRoot = new TreeNode(Integer.valueOf(strArray[index])); pRoot.left = Deserialize(str); pRoot.right = Deserialize(str); } return pRoot; }}
阅读全文
0 0
- 二叉树序列化
- 二叉树序列化
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 二叉树序列化
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- 序列化二叉树
- linux shell pushd popd dirs命令
- shell中的${},##, %% , :- ,:+, ? 的使用
- 利用vue实现多层循环
- 从Twitter下载视频
- Leetcode#389. Find the Difference(位运算=异或)
- 序列化二叉树
- EXCEL预览正常,打印却是空白的解决方法之一
- VEC-C 进阶 指令解析及寻址模式
- list对象转json 解决办法
- redis服务器配置小结
- springmvc使用小细节
- C++名词解释
- 英语短语
- Android手机设备唯一标识符