Skip to content

Commit 17b2370

Browse files
authored
feat: add swift implementation to lcof2 problem: No.051 (doocs#3066)
1 parent e546aab commit 17b2370

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

lcof2/剑指 Offer II 051. 节点之和最大的路径/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,51 @@ public class Solution {
348348
}
349349
```
350350

351+
#### Swift
352+
353+
```swift
354+
/* class TreeNode {
355+
* var val: Int
356+
* var left: TreeNode?
357+
* var right: TreeNode?
358+
* init() {
359+
* self.val = 0
360+
* self.left = nil
361+
* self.right = nil
362+
* }
363+
* init(_ val: Int) {
364+
* self.val = val
365+
* self.left = nil
366+
* self.right = nil
367+
* }
368+
* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
369+
* self.val = val
370+
* self.left = left
371+
* self.right = right
372+
* }
373+
* }
374+
*/
375+
376+
class Solution {
377+
private var ans = Int.min
378+
379+
func maxPathSum(_ root: TreeNode?) -> Int {
380+
_ = dfs(root)
381+
return ans
382+
}
383+
384+
private func dfs(_ root: TreeNode?) -> Int {
385+
guard let root = root else {
386+
return 0
387+
}
388+
let left = max(0, dfs(root.left))
389+
let right = max(0, dfs(root.right))
390+
ans = max(ans, root.val + left + right)
391+
return root.val + max(left, right)
392+
}
393+
}
394+
```
395+
351396
<!-- tabs:end -->
352397

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

0 commit comments

Comments
 (0)