层序遍历

// Encodes a tree to a single string.public String serialize(TreeNode root) {StringBuilder sb = new StringBuilder();sb.append("[");Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int size = queue.size();for (int i = 0; i < size; i++) {TreeNode node = queue.poll();sb.append(node == null ? "null," : node.val + ",");if (node != null) {queue.offer(node.left);queue.offer(node.right);}}}sb.deleteCharAt(sb.length() - 1);sb.append("]");return sb.toString();}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {String[] str = data.substring(1, data.length() - 1).split(",");int index = 0;TreeNode root = generatorNode(str[index++]);Queue<TreeNode> queue = new LinkedList<>();if (root != null) {queue.offer(root);}while (!queue.isEmpty()) {TreeNode node = queue.poll();node.left = generatorNode(index == str.length ? "null" : str[index++]);node.right = generatorNode(index == str.length ? "null" : str[index++]);if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}return root;}private TreeNode generatorNode(String s) {if (s.equals("null")) {return null;}return new TreeNode(Integer.parseInt(s));}
