File tree 2 files changed +115
-0
lines changed
2 files changed +115
-0
lines changed Original file line number Diff line number Diff line change @@ -344,6 +344,66 @@ public class Solution {
344
344
}
345
345
```
346
346
347
+ #### Swift
348
+
349
+ ``` swift
350
+ /* Definition for a Node.
351
+ * public class Node {
352
+ * public var val: Int
353
+ * public var left: Node?
354
+ * public var right: Node?
355
+
356
+ * public init() {
357
+ * self.val = 0
358
+ * self.left = nil
359
+ * self.right = nil
360
+ * }
361
+
362
+ * public init(_ val: Int) {
363
+ * self.val = val
364
+ * self.left = nil
365
+ * self.right = nil
366
+ * }
367
+
368
+ * public init(_ val: Int, _ left: Node?, _ right: Node?) {
369
+ * self.val = val
370
+ * self.left = left
371
+ * self.right = right
372
+ * }
373
+ * }
374
+ */
375
+
376
+ class Solution {
377
+ private var head: Node?
378
+ private var pre: Node?
379
+
380
+ func treeToDoublyList (_ root : Node? ) -> Node? {
381
+ if root == nil {
382
+ return nil
383
+ }
384
+ dfs (root)
385
+ head? .left = pre
386
+ pre? .right = head
387
+ return head
388
+ }
389
+
390
+ private func dfs (_ root : Node? ) {
391
+ guard let root = root else {
392
+ return
393
+ }
394
+ dfs (root.left )
395
+ if let preNode = pre {
396
+ preNode.right = root
397
+ } else {
398
+ head = root
399
+ }
400
+ root.left = pre
401
+ pre = root
402
+ dfs (root.right )
403
+ }
404
+ }
405
+ ```
406
+
347
407
<!-- tabs:end -->
348
408
349
409
<!-- solution:end -->
Original file line number Diff line number Diff line change
1
+ /* Definition for a Node.
2
+ * public class Node {
3
+ * public var val: Int
4
+ * public var left: Node?
5
+ * public var right: Node?
6
+
7
+ * public init() {
8
+ * self.val = 0
9
+ * self.left = nil
10
+ * self.right = nil
11
+ * }
12
+
13
+ * public init(_ val: Int) {
14
+ * self.val = val
15
+ * self.left = nil
16
+ * self.right = nil
17
+ * }
18
+
19
+ * public init(_ val: Int, _ left: Node?, _ right: Node?) {
20
+ * self.val = val
21
+ * self.left = left
22
+ * self.right = right
23
+ * }
24
+ * }
25
+ */
26
+
27
+ class Solution {
28
+ private var head : Node ?
29
+ private var pre : Node ?
30
+
31
+ func treeToDoublyList( _ root: Node ? ) -> Node ? {
32
+ if root == nil {
33
+ return nil
34
+ }
35
+ dfs ( root)
36
+ head? . left = pre
37
+ pre? . right = head
38
+ return head
39
+ }
40
+
41
+ private func dfs( _ root: Node ? ) {
42
+ guard let root = root else {
43
+ return
44
+ }
45
+ dfs ( root. left)
46
+ if let preNode = pre {
47
+ preNode. right = root
48
+ } else {
49
+ head = root
50
+ }
51
+ root. left = pre
52
+ pre = root
53
+ dfs ( root. right)
54
+ }
55
+ }
You can’t perform that action at this time.
0 commit comments