题解 | #序列化二叉树#
序列化二叉树
https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84
import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { String Serialize(TreeNode root) { if(root==null){ return null; } Queue<TreeNode> queue=new LinkedList<>(); String res=""; queue.add(root); TreeNode cur=null; String empty=""; while(!queue.isEmpty()){ cur=queue.poll(); if(cur==null){ empty=empty+"#"; }else{ res=res+empty+String.valueOf(cur.val)+"_"; empty=""; queue.add(cur.left); queue.add(cur.right); } } //System.out.println(res); return res; } TreeNode Deserialize(String str) { if(str==null){ return null; } int n=str.length(); Queue<Integer> queue=new LinkedList<>(); Integer num=0; //TreeNode root=; for(int i=0;i<n;i++){ if(str.charAt(i)=='_'){ queue.add(num); num=0; }else if(str.charAt(i)=='#'){ queue.add(null); }else{ num=num*10+str.charAt(i)-'0'; } } Queue<TreeNode> trees=new LinkedList<>(); TreeNode root=new TreeNode(queue.poll()); TreeNode cur= null; trees.add(root); while(!queue.isEmpty()){ cur=trees.poll(); num=queue.poll(); if(num!=null){ TreeNode left=new TreeNode(num); cur.left=left; trees.add(left); } if(!queue.isEmpty()){ num=queue.poll(); if(num!=null){ TreeNode right=new TreeNode(num); cur.right=right; trees.add(right); } } } return root; } }