一、题目内容

image.png

二、题解

解法1:

思路

代码

  1. import java.util.*;
  2. public class Solution {
  3. String Serialize(TreeNode root) {
  4. if (root == null) {
  5. return "[]";
  6. }
  7. StringBuilder res = new StringBuilder("[");
  8. Queue<TreeNode> queue = new LinkedList<>();
  9. queue.add(root);
  10. while (!queue.isEmpty()) {
  11. TreeNode node = queue.poll();
  12. if (node != null) {
  13. res.append(node.val + ",");
  14. queue.add(node.left);
  15. queue.add(node.right);
  16. } else {
  17. res.append("null,");
  18. }
  19. }
  20. res.deleteCharAt(res.length() - 1);
  21. res.append("]");
  22. return res.toString();
  23. }
  24. TreeNode Deserialize(String str) {
  25. if (str.equals("[]")) {
  26. return null;
  27. }
  28. String[] vals = str.substring(1, str.length() - 1).split(",");
  29. TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
  30. Queue<TreeNode> queue = new LinkedList<>();
  31. queue.add(root);
  32. int i = 1;
  33. while (!queue.isEmpty()) {
  34. TreeNode node = queue.poll();
  35. if (!vals[i].equals("null")) {
  36. TreeNode left = new TreeNode(Integer.parseInt(vals[i]));
  37. node.left = left;
  38. queue.add(left);
  39. }
  40. i++;
  41. if (!vals[i].equals("null")) {
  42. TreeNode right = new TreeNode(Integer.parseInt(vals[i]));
  43. node.right = right;
  44. queue.add(right);
  45. }
  46. i++;
  47. }
  48. return root;
  49. }
  50. }