File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
serialize-and-deserialize-binary-tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ package leetcode_study
2
+
3
+ class Codec {
4
+ private var index = 0
5
+ // Time Complexity: O(n)
6
+ // Space Complexity: O(n)
7
+ fun serialize (root : TreeNode ? ): String {
8
+ return buildString {
9
+ traverse(root, this )
10
+ }
11
+ }
12
+
13
+ fun traverse (node : TreeNode ? , sb : StringBuilder ) {
14
+ if (node == null ) {
15
+ sb.append(" null," )
16
+ return
17
+ }
18
+ sb.append(" ${node.`val `} ," )
19
+ traverse(node.left, sb)
20
+ traverse(node.right, sb)
21
+ }
22
+
23
+ // Time Complexity: O(n)
24
+ // Space Complexity: O(n)
25
+ fun deserialize (data : String ): TreeNode ? {
26
+ val values = data.split(" ," ).filter { it.isNotEmpty() }.toList()
27
+ index = 0
28
+ return buildTree(values)
29
+ }
30
+
31
+ fun buildTree (values : List <String >): TreeNode ? {
32
+ if (index >= values.size) return null
33
+ val value = values[index++ ] // index ๋ ๋งค๊ฐ๋ณ์๊ฐ ์๋๋ผ ์ ์ญ์ผ๋ก ๋์ด์ผ ํ๋ค!!
34
+ if (value == " null" ) return null
35
+ val node = TreeNode (value.toInt())
36
+ node.left = buildTree(values)
37
+ node.right = buildTree(values)
38
+ return node
39
+ }
40
+ }
41
+
You canโt perform that action at this time.
0 commit comments