File tree 2 files changed +69
-0
lines changed
2 files changed +69
-0
lines changed Original file line number Diff line number Diff line change @@ -204,6 +204,43 @@ function minimalExecTime(root: TreeNode | null): number {
204
204
}
205
205
```
206
206
207
+ #### Swift
208
+
209
+ ``` swift
210
+ /**
211
+ * public class TreeNode {
212
+ * public var val: Int
213
+ * public var left: TreeNode?
214
+ * public var right: TreeNode?
215
+ * public init() { self.val = 0; self.left = nil; self.right = nil; }
216
+ * public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
217
+ * public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
218
+ * self.val = val
219
+ * self.left = left
220
+ * self.right = right
221
+ * }
222
+ * }
223
+ */
224
+
225
+ class Solution {
226
+ func minimalExecTime (_ root : TreeNode? ) -> Double {
227
+ return dfs (root)[1 ]
228
+ }
229
+
230
+ private func dfs (_ root : TreeNode? ) -> [Double ] {
231
+ guard let root = root else { return [0.0 , 0.0 ] }
232
+
233
+ let left = dfs (root.left )
234
+ let right = dfs (root.right )
235
+
236
+ let sum = left[0 ] + right[0 ] + Double (root.val )
237
+ let time = max (max (left[1 ], right[1 ]), (left[0 ] + right[0 ]) / 2 ) + Double (root.val )
238
+
239
+ return [sum, time]
240
+ }
241
+ }
242
+ ```
243
+
207
244
<!-- tabs: end -->
208
245
209
246
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ /**
2
+ * public class TreeNode {
3
+ * public var val: Int
4
+ * public var left: TreeNode?
5
+ * public var right: TreeNode?
6
+ * public init() { self.val = 0; self.left = nil; self.right = nil; }
7
+ * public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
8
+ * public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
9
+ * self.val = val
10
+ * self.left = left
11
+ * self.right = right
12
+ * }
13
+ * }
14
+ */
15
+
16
+ class Solution {
17
+ func minimalExecTime( _ root: TreeNode ? ) -> Double {
18
+ return dfs ( root) [ 1 ]
19
+ }
20
+
21
+ private func dfs( _ root: TreeNode ? ) -> [ Double ] {
22
+ guard let root = root else { return [ 0.0 , 0.0 ] }
23
+
24
+ let left = dfs ( root. left)
25
+ let right = dfs ( root. right)
26
+
27
+ let sum = left [ 0 ] + right[ 0 ] + Double( root. val)
28
+ let time = max ( max ( left [ 1 ] , right [ 1 ] ) , ( left [ 0 ] + right[ 0 ] ) / 2 ) + Double( root. val)
29
+
30
+ return [ sum, time]
31
+ }
32
+ }
You can’t perform that action at this time.
0 commit comments