1.先序递归
772s
import java.util.*;
import java.lang.*;
class Solution {
String diviStr = "!";
String emptyNode = "#";
public String serialize(TreeNode root) {
StringBuffer sb = new StringBuffer();
if (root == null) {
return sb.toString();
}
preOrder(root, sb);
return sb.toString();
}
public void preOrder(TreeNode root, StringBuffer sb) {
if (root == null) {
sb.append(emptyNode).append(diviStr);
} else {
sb.append(root.val).append(diviStr);
preOrder(root.left, sb);
preOrder(root.right, sb);
}
}
public TreeNode deserialize(String data) {
if(data.equals("")){
return null;
}
LinkedList<String> list = new LinkedList<>();
list.addAll(Arrays.asList(data.split("!")));
return preOrderCreate(list);
}
public TreeNode preOrderCreate(LinkedList<String> list) {
String str = list.poll();
if (str.equals(emptyNode)) {
return null;
} else {
TreeNode node = new TreeNode(Integer.parseInt(str));
node.left = preOrderCreate(list);
node.right = preOrderCreate(list);
return node;
}
}
}
2.层序遍历
详情见九章
本文介绍了一种实现二叉树序列化和反序列化的算法,使用了先序遍历的方法来将二叉树编码为字符串,并能够从该字符串中还原出原来的二叉树结构。此外还提到了另一种层序遍历的方法。

2409

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



