序列化
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;
}