Serialize and Deserialize Binary Tree
推荐方法
public class Seri {
String result="";
int id=0;
private int serialWork(TreeNode root){
if (root==null) return -1;
id++;
int nowId=id;
int leftId=serialWork(root.left);
int rightId=serialWork(root.right);
result+=root.val+","+nowId+","+leftId+","+rightId+";";
return nowId;
}
public String serialize(TreeNode root) {
// write your code here
int rootId=serialWork(root);
return result;
}
public TreeNode deserialize(String data) {
// write your code here
String[] nodes=data.split(";");
HashMap<Integer,TreeNode> nodeHashMap=new HashMap<Integer, TreeNode>();
for (int i=0;i<nodes.length;i++){
String[] datas=nodes[i].split(",");
if (datas.length!=4) continue;
if (!nodeHashMap.containsKey(Integer.parseInt(datas[1]))) {
TreeNode node = new TreeNode(Integer.parseInt(datas[0]));
nodeHashMap.put(Integer.parseInt(datas[1]), node);
}
else{
nodeHashMap.get(Integer.parseInt(datas[1])).val=Integer.parseInt(datas[0]);
}
if (!nodeHashMap.containsKey(Integer.parseInt(datas[2])) && Integer.parseInt(datas[2])!=-1){
nodeHashMap.put(Integer.parseInt(datas[2]),new TreeNode(-1));
}
if (!nodeHashMap.containsKey(Integer.parseInt(datas[3])) && Integer.parseInt(datas[3])!=-1){
nodeHashMap.put(Integer.parseInt(datas[3]),new TreeNode(-1));
}
nodeHashMap.get(Integer.parseInt(datas[1])).left=nodeHashMap.get(Integer.parseInt(datas[2]));
nodeHashMap.get(Integer.parseInt(datas[1])).right=nodeHashMap.get(Integer.parseInt(datas[3]));
}
return nodeHashMap.get(1);
}
}其他方法

最后更新于
这有帮助吗?