Skip to content

Commit

Permalink
449. 序列化和反序列化二叉搜索树
Browse files Browse the repository at this point in the history
  • Loading branch information
BGMer7 committed Mar 22, 2023
1 parent 0ffd017 commit 3efc530
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions src/com/gatsby/_449SerializeAndDeserializeBST.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.gatsby;

import java.util.ArrayDeque;
import java.util.LinkedList;
import java.util.Queue;

/**
* @classname _449SerializeAndDeserializeBST
* @description:
* @author: bgm
* @create: 2022/9/30
**/

class Codec {
private TreeNode root;

public String serialize(TreeNode root) {
this.root = root;
return "";
}

public TreeNode root(String data) {
return root;
}
}

public class _449SerializeAndDeserializeBST {
public String serialize(TreeNode root) {
if (root == null) {
return "#";
}
Queue<TreeNode> queue = new ArrayDeque<>();
queue.add(root);
StringBuilder stringBuilder = new StringBuilder();
while (queue.size() > 0) {
TreeNode node = queue.poll();
stringBuilder.append("#");
if (node != null) {
queue.add(root.left);
queue.add(root.right);
stringBuilder.append(node.val);
}
}
return stringBuilder.toString();
}

public TreeNode deserialize(String data) {
if (data.equals("#")) {
return null;
}
String s[] = data.split("#", -1);
TreeNode ans = new TreeNode(Integer.parseInt(s[1]));
Queue<TreeNode> q = new LinkedList<>();
q.add(ans);
for (int i = 3; i < s.length; i += 2) {
TreeNode t = q.poll();
if (s[i - 1].length() > 0) {
t.left = new TreeNode(Integer.parseInt(s[i - 1]));
q.add(t.left);
}
if (s[i].length() > 0) {
t.right = new TreeNode(Integer.parseInt(s[i]));
q.add(t.right);
}
}
return ans;
}
}

0 comments on commit 3efc530

Please sign in to comment.