二叉树的序列化和反序列化
便于存储将二叉树等数据结构转化为字符串的形式的磁盘中存储,使用的时候再由字符串转换为二叉树结构即可。下文以先序遍历为例实现二叉树的序列化及反序列化。 此外由于结点val的长度未知,避免歧义,在序列化的过程中在每一个节点结束位置都插入 !字符;对于空元素也应使用一特殊字符‘#’标记。 序列化过程使用的就是二叉树的先序遍历,不过遍历过程中需将空值也存储起来。实现代码如下: public static String serialization(TreeNode root) { StringBuilder sb = new StringBuilder(); preOrder(root, sb); return sb.toString(); } public static void preOrder(TreeNode root, StringBuilder sb) { if (root == null) { sb.append("#!"); return; } sb.append(root.val); sb.append('!'); preOrder(root.left, sb); preOrder(root.right, sb); } 反序列化过程实现思路如下: 首先利用分隔符‘!’将字符串切割成字符串数组strs。 并且利用字符串数组第一个元素创建头结点root(若其不为‘#’时)