Skip to content

Commit 4614207

Browse files
authored
feat: add swift implementation to lcof2 problem: No.055 (doocs#3084)
1 parent 11e9b31 commit 4614207

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed

lcof2/剑指 Offer II 055. 二叉搜索树迭代器/README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,60 @@ BSTIterator.prototype.hasNext = function () {
431431
*/
432432
```
433433

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+
434488
<!-- tabs:end -->
435489

436490
<!-- solution:end -->
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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+
}

0 commit comments

Comments
 (0)