import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
* 剑指 Offer 37. 序列化二叉树
*
*
*/
public class SolutionJz37 {
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
// Encodes a tree to a single string.
public String serialize(TreeNode root) {
return serializeTree(root);
}
private String serializeTree(TreeNode root) {
StringBuffer stringBuffer = new StringBuffer();
if (root == null) {
return "None";
}
return stringBuffer
.append(root.val)
.append(",")
.append(serializeTree(root.left))
.append(",")
.append(serializeTree(root.right)).toString();
}
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
String[] dataArray = data.split(",");
List<String> dataList = new LinkedList<String>(Arrays.asList(dataArray));
return deserializationHead(dataList);
}
private TreeNode deserializationHead(List<String> nodeStrings) {
if (nodeStrings.get(0).equals("None")) {
nodeStrings.remove(0);
return null;
}
TreeNode root = new TreeNode(Integer.valueOf(nodeStrings.get(0)));
nodeStrings.remove(0);
root.left = deserializationHead(nodeStrings);
root.right = deserializationHead(nodeStrings);
return root;
}
public static void main(String args[]){
TreeNode treeNode1 = new TreeNode(1);
TreeNode treeNode2 = new TreeNode(2);
TreeNode treeNode3 = new TreeNode(3);
TreeNode treeNode4 = new TreeNode(4);
TreeNode treeNode5 = new TreeNode(5);
treeNode1.left = treeNode2;
treeNode1.right = treeNode3;
treeNode3.left = treeNode4;
treeNode3.right = treeNode5;
SolutionJz37 solutionJz37 = new SolutionJz37();
String str = solutionJz37.serialize(treeNode1);
System.out.println(str);
TreeNode treeNode = solutionJz37.deserialize(str);
String str2 = solutionJz37.serialize(treeNode);
System.out.println(str2);
}
}
剑指 Offer 37. 序列化二叉树
最新推荐文章于 2021-09-05 20:33:44 发布