层序遍历二叉树序列化与反序列化
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; } }