public class Test61 {
String Serialize(TreeNode root) {
if (root == null) {
return "#,";
}
StringBuffer s = new StringBuffer(root.value + ",");
s.append(Serialize(root.left));
s.append(Serialize(root.right));
return s.toString();
}
TreeNode Deserialize(String str) {
if (str == null || str.trim().equals("")) {
return null;
}
String[] strs = str.split(",");
return recon(strs);
}
int index = 0;
public TreeNode recon(String[] strs) {
if (index >= strs.length || strs[index].equals("#")) {
index++;
return null;
}
TreeNode node = new TreeNode(Integer.valueOf(strs[index++]));
node.left = recon(strs);
node.right = recon(strs);
return node;
}
public static void main(String[] args) {
TreeNode root = new TreeNode(10);
root.left = new TreeNode(12);
root.right = new TreeNode(5);
root.right.left = new TreeNode(4);
root.right.right = new TreeNode(7);
root.left.left = new TreeNode(3);
root.left.right = new TreeNode(8);
Test61 test61=new Test61();
System.out.println(test61.Serialize(root));
System.out.println(test61.Deserialize(test61.Serialize(root)));
System.out.println(test61.Deserialize("#"));
}
}
61 序列化与反序列化二叉树
最新推荐文章于 2024-07-18 18:08:02 发布