Skip to content

Commit 7974957

Browse files
committed
serialize and deserialize binary tree
1 parent 388218b commit 7974957

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+

0 commit comments

Comments
ย (0)