Skip to content

Commit f711e88

Browse files
authored
feat: add swift implementation to lcof2 problem: No.049 (doocs#3064)
1 parent b574ba5 commit f711e88

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

lcof2/剑指 Offer II 049. 从根节点到叶节点的路径数字之和/README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,49 @@ func sumNumbers(root *TreeNode) int {
189189
}
190190
```
191191

192+
#### Swift
193+
194+
```swift
195+
/* class TreeNode {
196+
* var val: Int
197+
* var left: TreeNode?
198+
* var right: TreeNode?
199+
* init() {
200+
* self.val = 0
201+
* self.left = nil
202+
* self.right = nil
203+
* }
204+
* init(_ val: Int) {
205+
* self.val = val
206+
* self.left = nil
207+
* self.right = nil
208+
* }
209+
* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
210+
* self.val = val
211+
* self.left = left
212+
* self.right = right
213+
* }
214+
* }
215+
*/
216+
217+
class Solution {
218+
func sumNumbers(_ root: TreeNode?) -> Int {
219+
return dfs(root, 0)
220+
}
221+
222+
private func dfs(_ root: TreeNode?, _ presum: Int) -> Int {
223+
guard let root = root else {
224+
return 0
225+
}
226+
let s = presum * 10 + root.val
227+
if root.left == nil && root.right == nil {
228+
return s
229+
}
230+
return dfs(root.left, s) + dfs(root.right, s)
231+
}
232+
}
233+
```
234+
192235
<!-- tabs:end -->
193236

194237
<!-- solution:end -->
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
func sumNumbers(_ root: TreeNode?) -> Int {
25+
return dfs(root, 0)
26+
}
27+
28+
private func dfs(_ root: TreeNode?, _ presum: Int) -> Int {
29+
guard let root = root else {
30+
return 0
31+
}
32+
let s = presum * 10 + root.val
33+
if root.left == nil && root.right == nil {
34+
return s
35+
}
36+
return dfs(root.left, s) + dfs(root.right, s)
37+
}
38+
}

0 commit comments

Comments
 (0)