序列化二叉树
Posted 氵冫丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化二叉树相关的知识,希望对你有一定的参考价值。
题目
请实现两个函数,分别用来序列化和反序列化二叉树
解题
什么是序列化?
可以理解为一直存储结构
序列化后还要可以反序列化
对于树的序列号,可以理解为层次遍历,但是也要记录其中的空结点,这是为了能够回去
public class Solution {
String Serialize(TreeNode root) {
if(root == null)
return "";
StringBuilder sb = new StringBuilder();
Serialize(root, sb);
return sb.toString();
}
void Serialize(TreeNode root, StringBuilder sb) {
if(root == null) {
sb.append("#,");
return;
}
sb.append(root.val);
sb.append(‘,‘);
Serialize(root.left, sb);
Serialize(root.right, sb);
}
int index = -1;
TreeNode Deserialize(String str) {
if(str.length() == 0)
return null;
String[] strs = str.split(",");
return Deserialize(strs);
}
TreeNode Deserialize(String[] strs) {
index++;
if(!strs[index].equals("#")) {
TreeNode root = new TreeNode(0);
root.val = Integer.parseInt(strs[index]);
root.left = Deserialize(strs);
root.right = Deserialize(strs);
return root;
}
return null;
}
}
以上是关于序列化二叉树的主要内容,如果未能解决你的问题,请参考以下文章