JZ61-序列化二叉树
序列化二叉树
https://www.nowcoder.com/questionTerminal/cf7e25aa97c04cc1a68c8f040e71fb84?answerType=1&f=discussion
public class Solution { String Serialize(TreeNode root) { if(root==null){ return ""; } Queue<TreeNode> queue = new LinkedList<TreeNode>(); StringBuilder sb = new StringBuilder(); queue.add(root); while(!queue.isEmpty()){ TreeNode temp = queue.poll(); if(temp!=null){ sb.append(temp.val+","); queue.add(temp.left); queue.add(temp.right); }else{ sb.append("#,"); //等于null也要添加入队列 } } return sb.toString(); } TreeNode Deserialize(String data) { if (data=="") { return null; } String[] val = data.substring(0, data.length() - 1).split(","); Queue<TreeNode> queue = new LinkedList<TreeNode>(); TreeNode root = new TreeNode(Integer.parseInt(val[0])); int cur = 1; queue.offer(root); while (!queue.isEmpty()) { TreeNode curNode = queue.poll(); if (!"#".equals(val[cur])){ curNode.left = new TreeNode(Integer.valueOf(val[cur])); queue.offer(curNode.left); } cur++; if (!"#".equals(val[cur])) { curNode.right = new TreeNode(Integer.valueOf(val[cur])); queue.offer(curNode.right); } cur++; } return root; } }