File tree Expand file tree Collapse file tree 2 files changed +103
-0
lines changed
lcof2/剑指 Offer II 055. 二叉搜索树迭代器 Expand file tree Collapse file tree 2 files changed +103
-0
lines changed Original file line number Diff line number Diff line change @@ -431,6 +431,60 @@ BSTIterator.prototype.hasNext = function () {
431
431
*/
432
432
```
433
433
434
+ #### Swift
435
+
436
+ ``` swift
437
+ /* class TreeNode {
438
+ * var val: Int
439
+ * var left: TreeNode?
440
+ * var right: TreeNode?
441
+ * init() {
442
+ * self.val = 0
443
+ * self.left = nil
444
+ * self.right = nil
445
+ * }
446
+ * init(_ val: Int) {
447
+ * self.val = val
448
+ * self.left = nil
449
+ * self.right = nil
450
+ * }
451
+ * init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
452
+ * self.val = val
453
+ * self.left = left
454
+ * self.right = right
455
+ * }
456
+ * }
457
+ */
458
+
459
+ class BSTIterator {
460
+ private var cur = 0
461
+ private var vals = [Int ]()
462
+
463
+ init (_ root : TreeNode? ) {
464
+ inorder (root)
465
+ }
466
+
467
+ func next () -> Int {
468
+ let value = vals[cur]
469
+ cur += 1
470
+ return value
471
+ }
472
+
473
+ func hasNext () -> Bool {
474
+ return cur < vals.count
475
+ }
476
+
477
+ private func inorder (_ root : TreeNode? ) {
478
+ guard let node = root else {
479
+ return
480
+ }
481
+ inorder (node.left )
482
+ vals.append (node.val )
483
+ inorder (node.right )
484
+ }
485
+ }
486
+ ```
487
+
434
488
<!-- tabs:end -->
435
489
436
490
<!-- solution:end -->
Original file line number Diff line number Diff line change
1
+ /* class TreeNode {
2
+ * var val: Int
3
+ * var left: TreeNode?
4
+ * var right: TreeNode?
5
+ * init() {
6
+ * self.val = 0
7
+ * self.left = nil
8
+ * self.right = nil
9
+ * }
10
+ * init(_ val: Int) {
11
+ * self.val = val
12
+ * self.left = nil
13
+ * self.right = nil
14
+ * }
15
+ * init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
16
+ * self.val = val
17
+ * self.left = left
18
+ * self.right = right
19
+ * }
20
+ * }
21
+ */
22
+
23
+ class BSTIterator {
24
+ private var cur = 0
25
+ private var vals = [ Int] ( )
26
+
27
+ init ( _ root: TreeNode ? ) {
28
+ inorder ( root)
29
+ }
30
+
31
+ func next( ) -> Int {
32
+ let value = vals [ cur]
33
+ cur += 1
34
+ return value
35
+ }
36
+
37
+ func hasNext( ) -> Bool {
38
+ return cur < vals. count
39
+ }
40
+
41
+ private func inorder( _ root: TreeNode ? ) {
42
+ guard let node = root else {
43
+ return
44
+ }
45
+ inorder ( node. left)
46
+ vals. append ( node. val)
47
+ inorder ( node. right)
48
+ }
49
+ }
You can’t perform that action at this time.
0 commit comments