File tree Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .gatsby ;
2
+
3
+ import java .util .ArrayDeque ;
4
+ import java .util .LinkedList ;
5
+ import java .util .Queue ;
6
+
7
+ /**
8
+ * @classname _449SerializeAndDeserializeBST
9
+ * @description:
10
+ * @author: bgm
11
+ * @create: 2022/9/30
12
+ **/
13
+
14
+ class Codec {
15
+ private TreeNode root ;
16
+
17
+ public String serialize (TreeNode root ) {
18
+ this .root = root ;
19
+ return "" ;
20
+ }
21
+
22
+ public TreeNode root (String data ) {
23
+ return root ;
24
+ }
25
+ }
26
+
27
+ public class _449SerializeAndDeserializeBST {
28
+ public String serialize (TreeNode root ) {
29
+ if (root == null ) {
30
+ return "#" ;
31
+ }
32
+ Queue <TreeNode > queue = new ArrayDeque <>();
33
+ queue .add (root );
34
+ StringBuilder stringBuilder = new StringBuilder ();
35
+ while (queue .size () > 0 ) {
36
+ TreeNode node = queue .poll ();
37
+ stringBuilder .append ("#" );
38
+ if (node != null ) {
39
+ queue .add (root .left );
40
+ queue .add (root .right );
41
+ stringBuilder .append (node .val );
42
+ }
43
+ }
44
+ return stringBuilder .toString ();
45
+ }
46
+
47
+ public TreeNode deserialize (String data ) {
48
+ if (data .equals ("#" )) {
49
+ return null ;
50
+ }
51
+ String s [] = data .split ("#" , -1 );
52
+ TreeNode ans = new TreeNode (Integer .parseInt (s [1 ]));
53
+ Queue <TreeNode > q = new LinkedList <>();
54
+ q .add (ans );
55
+ for (int i = 3 ; i < s .length ; i += 2 ) {
56
+ TreeNode t = q .poll ();
57
+ if (s [i - 1 ].length () > 0 ) {
58
+ t .left = new TreeNode (Integer .parseInt (s [i - 1 ]));
59
+ q .add (t .left );
60
+ }
61
+ if (s [i ].length () > 0 ) {
62
+ t .right = new TreeNode (Integer .parseInt (s [i ]));
63
+ q .add (t .right );
64
+ }
65
+ }
66
+ return ans ;
67
+ }
68
+ }
You can’t perform that action at this time.
0 commit comments