题解 | #序列化二叉树#
序列化二叉树
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 { TreeNode nullNode = new TreeNode(-1); String Serialize(TreeNode root) { if(root == null){ return ""; } StringBuilder sb = new StringBuilder(); Deque<TreeNode> queue = new LinkedList<>(); queue.add(root); while(!queue.isEmpty()){ root = queue.poll(); sb.append(root.val+"!"); if(root!=nullNode){ if(root.left!=null){ queue.add(root.left); }else{ queue.add(nullNode); } if(root.right!=null){ queue.add(root.right); }else{ queue.add(nullNode); } } } return sb.toString(); } TreeNode Deserialize(String str) { if("".equals(str)){ return null; } String[] vals = str.split("!"); TreeNode root = new TreeNode(Integer.parseInt(vals[0])); Deque<TreeNode> queue = new LinkedList<>(); queue.offer(root); for(int i = 1; i < vals.length; i+=2){ TreeNode node = queue.poll(); int left = Integer.parseInt(vals[i]); int right = Integer.parseInt(vals[i+1]); if(left!=-1){ node.left = new TreeNode(left); queue.add(node.left); } if(right!=-1){ node.right = new TreeNode(right); queue.add(node.right); } } return root; } }