From 3efc5306bff3e888fd8b28464384a87ab6f27e75 Mon Sep 17 00:00:00 2001 From: bgmer7 Date: Fri, 30 Sep 2022 16:54:06 +0800 Subject: [PATCH] =?UTF-8?q?449.=20=E5=BA=8F=E5=88=97=E5=8C=96=E5=92=8C?= =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E4=BA=8C=E5=8F=89=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_449SerializeAndDeserializeBST.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/com/gatsby/_449SerializeAndDeserializeBST.java diff --git a/src/com/gatsby/_449SerializeAndDeserializeBST.java b/src/com/gatsby/_449SerializeAndDeserializeBST.java new file mode 100644 index 0000000..f8bee99 --- /dev/null +++ b/src/com/gatsby/_449SerializeAndDeserializeBST.java @@ -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 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 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; + } +}