File tree Expand file tree Collapse file tree 2 files changed +85
-0
lines changed
lcof2/剑指 Offer II 051. 节点之和最大的路径 Expand file tree Collapse file tree 2 files changed +85
-0
lines changed Original file line number Diff line number Diff line change @@ -348,6 +348,51 @@ public class Solution {
348
348
}
349
349
```
350
350
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
+
351
396
<!-- tabs: end -->
352
397
353
398
<!-- 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 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
+ }
You can’t perform that action at this time.
0 commit comments