297. Serialize and Deserialize Binary Tree
level order遍历+构造
相似:449
// Encodes a tree to a single string.
public String serialize(TreeNode root) {
if (root == null) return "";
StringBuffer sb = new StringBuffer();
LinkedList<TreeNode> list = new LinkedList<>();
list.add(root);
while (!list.isEmpty()) {
TreeNode node = list.remove();
if (node != null) {
sb.append(node.val + ",");
list.add(node.left);
list.add(node.right);
} else {
sb.append("#,");
}
}
return sb.substring(0, sb.length() - 1);
}
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
if (data.length() == 0) return null;
String[] nodes = data.split(",");
LinkedList<TreeNode> list = new LinkedList<>();
TreeNode root = new TreeNode(Integer.parseInt(nodes[0]));
list.add(root);
int count = 1;
while (!list.isEmpty() && count < nodes.length) {
TreeNode node = list.remove();
if (!nodes[count].equals("#")) {
node.left = new TreeNode(Integer.parseInt(nodes[count]));
list.add(node.left);
}
count++;
if (!nodes[count].equals("#")) {
node.right = new TreeNode(Integer.parseInt(nodes[count]));
list.add(node.right);
}
count++;
}
return root;
}