Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 17b2370

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /