题目描述
请实现两个函数,分别用来序列化和反序列化二叉树。
序列化:遍历二叉树为字符串。
反序列化:依据字符串构造二叉树。
解题思路
依据前序遍历来序列化二叉树,如果是 null 指针,则转为特殊字符“#”。这样字符串中包含了所有结点和每个叶子结点下的空节点。
反序列化根据前序遍历,遇到特殊字符“#”就返回 Null。
代码
public class Solution {
private StringBuilder sb = new StringBuilder();
private int index = -1;
String Serialize(TreeNode root) {
if(root == null){
sb.append("#,");
return sb.toString();
}
sb.append(root.val + ",");
Serialize(root.left);
Serialize(root.right);
return sb.toString();
}
TreeNode Deserialize(String str) {
index++;
String[] strr = str.split(",");
TreeNode node = null;
if(!strr[index].equals("#")){
node = new TreeNode(Integer.valueOf(strr[index]));
node.left = Deserialize(str);
node.right = Deserialize(str);
}
return node;
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于