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.层序遍历
详情见九章