成都seo公司排名,seo网站优化怎么做,查询域名注册网站,长春最新通告今天文章目录题目描述思路 代码二刷题目描述
这道题涉及到不少 String、StringBuilder、Integer的转换、处理。
思路 代码
序列化#xff1a;迭代进行一个层序遍历#xff0c;逐个加入结果字符串中。反序列化#xff1a;根据序列化得到的结果字符串 代码二刷题目描述
这道题涉及到不少 String、StringBuilder、Integer的转换、处理。
思路 代码
序列化迭代进行一个层序遍历逐个加入结果字符串中。反序列化根据序列化得到的结果字符串同样是借助队列进行层序遍历来构造出二叉树。总的来说是需要多敲几遍的题String等类的用法
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/
public class Codec {// 知识点String、StringBuilder、parseInt的处理// Encodes a tree to a single string.public String serialize(TreeNode root) {if(root null) {return [];}StringBuilder res new StringBuilder([);QueueTreeNode queue new LinkedList();queue.add(root);// 层序遍历 BFS(迭代) while(!queue.isEmpty()) {TreeNode temp queue.poll();if(temp ! null) {// 当前值加入 res子结点加入 queueres.append(temp.val).append(,);queue.add(temp.left);queue.add(temp.right);}// 空结点 情况else {res.append(null,);}}// 删除末尾的,res.delete(res.length() - 1, res.length());res.append(]);return res.toString();}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {if(data.equals([])) {return null;}// 1. initString[] vals data.substring(1, data.length() - 1).split(,);TreeNode root new TreeNode(Integer.parseInt(vals[0]));QueueTreeNode queue new LinkedList();queue.add(root);// 2. deserializefor(int i 1; !queue.isEmpty(); i 2) {TreeNode temp queue.poll();// 左结点判断if(!vals[i].equals(null)) {temp.left new TreeNode(Integer.parseInt(vals[i]));queue.add(temp.left);}// 右结点判断if(!vals[i 1].equals(null)) {temp.right new TreeNode(Integer.parseInt(vals[i 1]));queue.add(temp.right);}}return root;}
}// Your Codec object will be instantiated and called as such:
// Codec codec new Codec();
// codec.deserialize(codec.serialize(root));二刷
序列化格式逗号’,作为分割符“null” 作为空节点。按照层序遍历序列化注意序列化、反序列都需要队列辅助
public class Codec {public String serialize(TreeNode root) {if(root null) {return ;}StringBuilder sb new StringBuilder();LinkedListTreeNode queue new LinkedList();queue.add(root);while(!queue.isEmpty()) {TreeNode temp queue.poll();if(temp null) {sb.append(null,);}else {sb.append(temp.val).append(,);queue.add(temp.left);queue.add(temp.right);}}return sb.toString();}public TreeNode deserialize(String data) {if(data.length() 0) {return null;}String[] vals data.split(,);TreeNode root new TreeNode(Integer.parseInt(vals[0]));LinkedListTreeNode queue new LinkedList(); // 还是需要辅助队列queue.add(root);for(int i 1; i vals.length; i 2) {TreeNode temp queue.poll();if(!vals[i].equals(null)) {temp.left new TreeNode(Integer.parseInt(vals[i]));queue.add(temp.left);}if(!vals[i 1].equals(null)) {temp.right new TreeNode(Integer.parseInt(vals[i 1]));queue.add(temp.right);}}return root;}
}