File tree Expand file tree Collapse file tree 2 files changed +69
-0
lines changed Expand file tree Collapse file tree 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 {
204204}
205205```
206206
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+
207244<!-- tabs: end -->
208245
209246<!-- 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