File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * public var val: Int
5
+ * public var left: TreeNode?
6
+ * public var right: TreeNode?
7
+ * public init(_ val: Int) {
8
+ * self.val = val
9
+ * self.left = nil
10
+ * self.right = nil
11
+ * }
12
+ * }
13
+ */
14
+
15
+ class Codec {
16
+
17
+ func preorderTraversal( _ root: TreeNode ? ) -> String {
18
+ guard let root = root else { return " x " }
19
+ return " \( root. val) " + " " + preorderTraversal( root. left) + " " + preorderTraversal( root. right)
20
+ }
21
+
22
+ func serialize( _ root: TreeNode ? ) -> String {
23
+ return preorderTraversal ( root)
24
+ }
25
+
26
+ func preorderTraversal( _ data: [ String ] , _ index: inout Int ) -> TreeNode ? {
27
+ guard index < data. count else { return nil }
28
+ guard data [ index] != " x " else { return nil }
29
+ guard let val = Int ( data [ index] ) else { return nil }
30
+ let current = TreeNode ( val)
31
+ index += 1
32
+ current. left = preorderTraversal ( data, & index)
33
+ index += 1
34
+ current. right = preorderTraversal ( data, & index)
35
+ return current
36
+ }
37
+
38
+ func deserialize( _ data: String ) -> TreeNode ? {
39
+ guard !data. isEmpty else { return nil }
40
+ var index = 0
41
+ return preorderTraversal ( data. split ( separator: " " ) . map { String ( $0) } , & index)
42
+ }
43
+ }
44
+
45
+ // Your Codec object will be instantiated and called as such:
46
+ // var ser = Codec()
47
+ // var deser = Codec()
48
+ // deser.deserialize(ser.serialize(root))
You can’t perform that action at this time.
0 commit comments