package Leetcode; import java.util.LinkedList; import java.util.Queue; //请实现两个函数,分别用来序列化和反序列化二叉树。 public class test37 { public static void main(String[] args) { TreeNode t=new TreeNode(1); t.left=new TreeNode(2); t.right=new TreeNode(3); t.right.left=new TreeNode(4); t.right.right=new TreeNode(5); String s=serialize(t); TreeNode tr=deserialize(s); int x=0; } // Encodes a tree to a single string. public static String serialize(TreeNode root) { if(root==null){ return "[]"; } String s=""; Queue<TreeNode> q=new LinkedList<>(); q.offer(root); s=s+"["; while(!q.isEmpty()){ TreeNode t=q.poll(); if(t!=null){ s=s+t.val+","; q.offer(t.left); q.offer(t.right); }else{ s=s+"null,"; } } s=s.substring(0,s.length()-1); s=s+"]"; return s; } // Decodes your encoded data to tree. public static TreeNode deserialize(String data) { if(data.equals("[]")){ return null; } String []s=data.substring(1, data.length()-1).split(","); TreeNode root=new TreeNode(Integer.parseInt(s[0])); Queue<TreeNode> q=new LinkedList<>(); q.offer(root); int i=1; while(!q.isEmpty()){ TreeNode tr=q.poll(); if(!s[i].equals("null")){ tr.left=new TreeNode(Integer.parseInt(s[i])); q.offer(tr.left); } i++; if(!s[i].equals("null")){ tr.right=new TreeNode(Integer.parseInt(s[i])); q.offer(tr.right); } i++; } return root; } }