题解 | #序列化二叉树#
序列化二叉树
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) { StringBuilder sb = new StringBuilder(); dfs1(root, sb); return sb.toString(); } TreeNode Deserialize(String str) { String[] arr = str.split(","); LinkedList<String> queue = new LinkedList<>(); for(String st:arr){ queue.offer(st); } TreeNode node= dfs2(queue); return node; } public void dfs1(TreeNode node, StringBuilder sb) { //先序遍历 if (node == null) { //遍历到空 sb.append("null").append(","); return; } sb.append(node.val).append(","); dfs1(node.left, sb); dfs1(node.right, sb); } public TreeNode dfs2(LinkedList<String> queue){ if(queue.isEmpty()){ return null; } String s=queue.poll(); if(s.equals("null")){ return null; } TreeNode node=new TreeNode(Integer.parseInt(s)); node.left=dfs2(queue); node.right=dfs2(queue); return node; } }