Skip to content

Commit ba1990e

Browse files
authored
feat: add swift implementation to lcof2 problem: No.044 (#3054)
1 parent 15c1b3f commit ba1990e

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

lcof2/剑指 Offer II 044. 二叉树每层的最大值/README.md

+52
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,58 @@ func largestValues(root *TreeNode) []int {
232232
}
233233
```
234234

235+
#### Swift
236+
237+
```swift
238+
/* class TreeNode {
239+
* var val: Int
240+
* var left: TreeNode?
241+
* var right: TreeNode?
242+
* init() {
243+
* self.val = 0
244+
* self.left = nil
245+
* self.right = nil
246+
* }
247+
* init(_ val: Int) {
248+
* self.val = val
249+
* self.left = nil
250+
* self.right = nil
251+
* }
252+
* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
253+
* self.val = val
254+
* self.left = left
255+
* self.right = right
256+
* }
257+
* }
258+
*/
259+
260+
class Solution {
261+
func largestValues(_ root: TreeNode?) -> [Int] {
262+
var ans = [Int]()
263+
guard let root = root else {
264+
return ans
265+
}
266+
var q = [TreeNode]()
267+
q.append(root)
268+
while !q.isEmpty {
269+
var t = Int.min
270+
for _ in 0..<q.count {
271+
let node = q.removeFirst()
272+
t = max(t, node.val)
273+
if let left = node.left {
274+
q.append(left)
275+
}
276+
if let right = node.right {
277+
q.append(right)
278+
}
279+
}
280+
ans.append(t)
281+
}
282+
return ans
283+
}
284+
}
285+
```
286+
235287
<!-- tabs:end -->
236288

237289
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
func largestValues(_ root: TreeNode?) -> [Int] {
25+
var ans = [Int]()
26+
guard let root = root else {
27+
return ans
28+
}
29+
var q = [TreeNode]()
30+
q.append(root)
31+
while !q.isEmpty {
32+
var t = Int.min
33+
for _ in 0..<q.count {
34+
let node = q.removeFirst()
35+
t = max(t, node.val)
36+
if let left = node.left {
37+
q.append(left)
38+
}
39+
if let right = node.right {
40+
q.append(right)
41+
}
42+
}
43+
ans.append(t)
44+
}
45+
return ans
46+
}
47+
}

0 commit comments

Comments
 (0)