Skip to content

Commit 0cfd4c6

Browse files
authored
feat: add swift implementation to lcci problem: No.04.03 (doocs#2652)
1 parent 387fb1e commit 0cfd4c6

File tree

3 files changed

+165
-0
lines changed

3 files changed

+165
-0
lines changed

lcci/04.03.List of Depth/README.md

+56
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,62 @@ impl Solution {
311311
}
312312
```
313313

314+
```swift
315+
/* class TreeNode {
316+
* var val: Int
317+
* var left: TreeNode?
318+
* var right: TreeNode?
319+
*
320+
* init(_ val: Int) {
321+
* self.val = val
322+
* self.left = nil
323+
* self.right = nil
324+
* }
325+
* }
326+
*/
327+
328+
/* class ListNode {
329+
* var val: Int
330+
* var next: ListNode?
331+
*
332+
* init(_ val: Int) {
333+
* self.val = val
334+
* self.next = nil
335+
* }
336+
* }
337+
*/
338+
339+
class Solution {
340+
func listOfDepth(_ tree: TreeNode?) -> [ListNode?] {
341+
var ans = [ListNode?]()
342+
guard let tree = tree else { return ans }
343+
344+
var q = [TreeNode]()
345+
q.append(tree)
346+
347+
while !q.isEmpty {
348+
let dummy = ListNode(0)
349+
var cur = dummy
350+
for _ in 0..<q.count {
351+
let node = q.removeFirst()
352+
cur.next = ListNode(node.val)
353+
cur = cur.next!
354+
355+
if let left = node.left {
356+
q.append(left)
357+
}
358+
if let right = node.right {
359+
q.append(right)
360+
}
361+
}
362+
ans.append(dummy.next)
363+
}
364+
365+
return ans
366+
}
367+
}
368+
```
369+
314370
<!-- tabs:end -->
315371

316372
<!-- end -->

lcci/04.03.List of Depth/README_EN.md

+56
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,62 @@ impl Solution {
323323
}
324324
```
325325

326+
```swift
327+
/* class TreeNode {
328+
* var val: Int
329+
* var left: TreeNode?
330+
* var right: TreeNode?
331+
*
332+
* init(_ val: Int) {
333+
* self.val = val
334+
* self.left = nil
335+
* self.right = nil
336+
* }
337+
* }
338+
*/
339+
340+
/* class ListNode {
341+
* var val: Int
342+
* var next: ListNode?
343+
*
344+
* init(_ val: Int) {
345+
* self.val = val
346+
* self.next = nil
347+
* }
348+
* }
349+
*/
350+
351+
class Solution {
352+
func listOfDepth(_ tree: TreeNode?) -> [ListNode?] {
353+
var ans = [ListNode?]()
354+
guard let tree = tree else { return ans }
355+
356+
var q = [TreeNode]()
357+
q.append(tree)
358+
359+
while !q.isEmpty {
360+
let dummy = ListNode(0)
361+
var cur = dummy
362+
for _ in 0..<q.count {
363+
let node = q.removeFirst()
364+
cur.next = ListNode(node.val)
365+
cur = cur.next!
366+
367+
if let left = node.left {
368+
q.append(left)
369+
}
370+
if let right = node.right {
371+
q.append(right)
372+
}
373+
}
374+
ans.append(dummy.next)
375+
}
376+
377+
return ans
378+
}
379+
}
380+
```
381+
326382
<!-- tabs:end -->
327383

328384
<!-- end -->
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/* class TreeNode {
2+
* var val: Int
3+
* var left: TreeNode?
4+
* var right: TreeNode?
5+
*
6+
* init(_ val: Int) {
7+
* self.val = val
8+
* self.left = nil
9+
* self.right = nil
10+
* }
11+
* }
12+
*/
13+
14+
/* class ListNode {
15+
* var val: Int
16+
* var next: ListNode?
17+
*
18+
* init(_ val: Int) {
19+
* self.val = val
20+
* self.next = nil
21+
* }
22+
* }
23+
*/
24+
25+
class Solution {
26+
func listOfDepth(_ tree: TreeNode?) -> [ListNode?] {
27+
var ans = [ListNode?]()
28+
guard let tree = tree else { return ans }
29+
30+
var q = [TreeNode]()
31+
q.append(tree)
32+
33+
while !q.isEmpty {
34+
let dummy = ListNode(0)
35+
var cur = dummy
36+
for _ in 0..<q.count {
37+
let node = q.removeFirst()
38+
cur.next = ListNode(node.val)
39+
cur = cur.next!
40+
41+
if let left = node.left {
42+
q.append(left)
43+
}
44+
if let right = node.right {
45+
q.append(right)
46+
}
47+
}
48+
ans.append(dummy.next)
49+
}
50+
51+
return ans
52+
}
53+
}

0 commit comments

Comments
 (0)