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