层序遍历二叉树序列化与反序列化
import java.util.*;
public class Solution {
String Serialize(TreeNode root) {
if (root == null) {
return "#";
}
StringBuilder res = new StringBuilder();
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode node = queue.removeFirst();
if (node == null) {
res.append("#,");
} else {
res.append(node.val).append(",");
queue.add(node.left);
queue.add(node.right);
}
}
return res.toString();
}
TreeNode Deserialize(String str) {
if (str.equals("#")) {
return null;
}
String[] strs = str.split(",");
TreeNode root = new TreeNode(Integer.parseInt(strs[0]));
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
int i = 1;
while (!queue.isEmpty()) {
TreeNode node = queue.removeFirst();
if (!strs[i].equals("#")) {
node.left = new TreeNode(Integer.parseInt(strs[i]));
queue.add(node.left);
}
i++;
if (!strs[i].equals("#")) {
node.right = new TreeNode(Integer.parseInt(strs[i]));
queue.add(node.right);
}
i++;
}
return root;
}
}

京公网安备 11010502036488号