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