写在前面:
二叉树的序列化:在前序遍历的基础上,将二叉树的结点遍历成一个字符串
二叉树的反序列化:在前序遍历的基础上,将一个字符串还原成一颗二叉树
注意:
(1)空指针null,序列化成一个特殊字符"#"
(2)相邻结点间的值,用","相隔,这样在反序列化时,就可以通过","来分割出一个数组
(3)定义一个index,初始化为-1,在反序列化时,记录数组的索引。
代码实现:
public class Solution {
// 根据前序遍历规则完成序列化与反序列化
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) {
// 所谓反序列化指的是依据字符串重新构造成二叉树
index++;
String[] array = str.split(",");
TreeNode root = null;
if (!array[index].equals("#")) {
root = new TreeNode(Integer.valueOf(array[index]));
root.left = Deserialize(str);
root.right = Deserialize(str);
}
return root;
}
}
本文介绍了一种基于前序遍历的二叉树序列化与反序列化方法,采用特殊字符#表示空节点,并使用分隔相邻节点值,便于字符串的解析。
280

被折叠的 条评论
为什么被折叠?



