这题我是用前序遍历方式public class Codec { // 序列化 public String serialize(TreeNode root) { StringBuilder sb new StringBuilder(); dfsSerialize(root, sb); return sb.toString(); } private void dfsSerialize(TreeNode node, StringBuilder sb) { if (node null) { sb.append(#,); return; } sb.append(node.val).append(,); dfsSerialize(node.left, sb); dfsSerialize(node.right, sb); } // 反序列化 int index 0; public TreeNode deserialize(String data) { String[] arr data.split(,); return dfsDeserialize(arr); } private TreeNode dfsDeserialize(String[] arr) { String val arr[index]; // 空节点 if (val.equals(#)) { return null; } TreeNode node new TreeNode(Integer.parseInt(val)); node.left dfsDeserialize(arr); node.right dfsDeserialize(arr); return node; } }
297. 二叉树的序列化与反序列化
这题我是用前序遍历方式public class Codec { // 序列化 public String serialize(TreeNode root) { StringBuilder sb new StringBuilder(); dfsSerialize(root, sb); return sb.toString(); } private void dfsSerialize(TreeNode node, StringBuilder sb) { if (node null) { sb.append(#,); return; } sb.append(node.val).append(,); dfsSerialize(node.left, sb); dfsSerialize(node.right, sb); } // 反序列化 int index 0; public TreeNode deserialize(String data) { String[] arr data.split(,); return dfsDeserialize(arr); } private TreeNode dfsDeserialize(String[] arr) { String val arr[index]; // 空节点 if (val.equals(#)) { return null; } TreeNode node new TreeNode(Integer.parseInt(val)); node.left dfsDeserialize(arr); node.right dfsDeserialize(arr); return node; } }