File tree Expand file tree Collapse file tree 1 file changed +66
-0
lines changed Expand file tree Collapse file tree 1 file changed +66
-0
lines changed Original file line number Diff line number Diff line change 1+ public class Codec {
2+
3+ // Encodes a tree to a single string.
4+ public String serialize (TreeNode root ) {
5+ if (root == null ) {
6+ return "" ;
7+ }
8+
9+ StringBuilder sb = new StringBuilder ();
10+ Queue <TreeNode > q = new LinkedList <>();
11+ q .offer (root );
12+
13+ while (!q .isEmpty ()) {
14+ int levelSize = q .size ();
15+
16+ for (int i = 0 ; i < levelSize ; i ++) {
17+ TreeNode t = q .poll ();
18+
19+ if (t == null ) {
20+ sb .append ("null " );
21+ continue ;
22+ }
23+
24+ sb .append (t .val ).append (" " );
25+
26+ q .offer (t .left );
27+ q .offer (t .right );
28+ }
29+ }
30+
31+ return sb .toString ();
32+ }
33+
34+ // Decodes your encoded data to tree.
35+ public TreeNode deserialize (String data ) {
36+ if (data == null || data .length () == 0 ) {
37+ return null ;
38+ }
39+
40+ String [] nodes = data .split (" " );
41+ Queue <TreeNode > q = new LinkedList <>();
42+
43+ TreeNode root = new TreeNode (Integer .parseInt (nodes [0 ]));
44+ q .offer (root );
45+
46+ for (int i = 1 ; i < nodes .length ; i ++) {
47+ TreeNode parent = q .poll ();
48+
49+ if (!nodes [i ].equals ("null" )) {
50+ TreeNode left = new TreeNode (Integer .parseInt (nodes [i ]));
51+ parent .left = left ;
52+ q .offer (left );
53+ }
54+
55+ ++i ;
56+
57+ if (!nodes [i ].equals ("null" )) {
58+ TreeNode right = new TreeNode (Integer .parseInt (nodes [i ]));
59+ parent .right = right ;
60+ q .offer (right );
61+ }
62+ }
63+
64+ return root ;
65+ }
66+ }
You can’t perform that action at this time.
0 commit comments