logologo

前序 序列化与反序列化

Sep 7, 2023

序列化

二叉树

public static Queue<String> preSerial(Node head) {
  Queue<String> ans = new LinkedList<>();
  pres(head, ans);
  return ans;
}

private static void pres(Node head, Queue<String> ans) {
  if (head == null) ans.add("#");
  else {
    ans.add(String.valueOf(head.value));
    pres(head.left, ans);
    pres(head.right, ans);
  }
}

反序列化

public static Node buildByPreQueue(Queue<String> list) {
  if (list == null || list.size() == 0) return null;
  return preb(list);
}

private static Node preb(Queue<String> list) {
  String value = list.poll();
  if (value == "#") return null;

  Node head = new Node(Integer.valueOf(value));
  head.left = preb(list);
  head.right = preb(list);
  return head;
}

C++Java
浙ICP备2021022773号    2022-PRESENT © ZhengKe