File tree Expand file tree Collapse file tree 3 files changed +85
-0
lines changed
剑指 Offer II 054. 所有大于等于节点的值之和
剑指 Offer II 055. 二叉搜索树迭代器 Expand file tree Collapse file tree 3 files changed +85
-0
lines changed Original file line number Diff line number Diff line change @@ -317,6 +317,51 @@ var convertBST = function (root) {
317
317
};
318
318
```
319
319
320
+ #### Swift
321
+
322
+ ``` swift
323
+ /* class TreeNode {
324
+ * var val: Int
325
+ * var left: TreeNode?
326
+ * var right: TreeNode?
327
+ * init() {
328
+ * self.val = 0
329
+ * self.left = nil
330
+ * self.right = nil
331
+ * }
332
+ * init(_ val: Int) {
333
+ * self.val = val
334
+ * self.left = nil
335
+ * self.right = nil
336
+ * }
337
+ * init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
338
+ * self.val = val
339
+ * self.left = left
340
+ * self.right = right
341
+ * }
342
+ * }
343
+ */
344
+
345
+ class Solution {
346
+ private var s = 0
347
+
348
+ func convertBST (_ root : TreeNode? ) -> TreeNode? {
349
+ dfs (root)
350
+ return root
351
+ }
352
+
353
+ private func dfs (_ root : TreeNode? ) {
354
+ guard let node = root else {
355
+ return
356
+ }
357
+ dfs (node.right )
358
+ s += node.val
359
+ node.val = s
360
+ dfs (node.left )
361
+ }
362
+ }
363
+ ```
364
+
320
365
<!-- tabs:end -->
321
366
322
367
<!-- 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 Solution {
24
+ private var s = 0
25
+
26
+ func convertBST( _ root: TreeNode ? ) -> TreeNode ? {
27
+ dfs ( root)
28
+ return root
29
+ }
30
+
31
+ private func dfs( _ root: TreeNode ? ) {
32
+ guard let node = root else {
33
+ return
34
+ }
35
+ dfs ( node. right)
36
+ s += node. val
37
+ node. val = s
38
+ dfs ( node. left)
39
+ }
40
+ }
You can’t perform that action at this time.
0 commit comments