java 也有split操作
str.substring(0, str.length() - 1).split(",");
import java.util.*; //层序遍历 class Solution { String Serialize(TreeNode root) { //根节点为空 单独考虑 if(root == null) return ""; Queue<TreeNode> queue2 = new LinkedList<TreeNode>(); queue2.offer(root); StringBuilder res = new StringBuilder(); while(!queue2.isEmpty()){ TreeNode temp = queue2.poll(); if(temp == null ) res.append("#").append(","); //这bug不容易查出来 原来后面没加括号 //一定是对流程非常熟悉 else { res.append(String.valueOf(temp.val)).append(","); queue2.offer(temp.left); queue2.offer(temp.right); } } return res.toString(); } TreeNode Deserialize(String str) { //根节点为空 单独考虑 if(str.equals("")) return null; //分割 String[] vals = str.substring(0, str.length() - 1).split(","); // 根节点加入队列 TreeNode root = new TreeNode(Integer.parseInt(vals[0])); Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); //根节点的有孩子在 位置 i上 int i = 1; while(!queue.isEmpty() && i<vals.length) { TreeNode node = queue.poll(); // 处理右孩子 if(!vals[i].equals("#")) { node.left = new TreeNode(Integer.parseInt(vals[i])); queue.add(node.left); } i++; // 处理左孩子 if(!vals[i].equals("#")) { node.right = new TreeNode(Integer.parseInt(vals[i])); queue.add(node.right); } i++; } return root; } }