Skip to content

Commit c29963f

Browse files
authored
feat: add swift implementation to lcp problem: No.67 (#4026)
1 parent b901bf8 commit c29963f

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

lcp/LCP 67. 装饰树/README.md

+40
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,46 @@ func expandBinaryTree(root *TreeNode) *TreeNode {
197197
}
198198
```
199199

200+
#### Swift
201+
202+
```swift
203+
/* class TreeNode {
204+
* var val: Int
205+
* var left: TreeNode?
206+
* var right: TreeNode?
207+
* init() { self.val = 0; self.left = nil; self.right = nil }
208+
* init(_ val: Int) { self.val = val; self.left = nil; self.right = nil }
209+
* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
210+
* self.val = val
211+
* self.left = left
212+
* self.right = right
213+
* }
214+
* }
215+
*/
216+
217+
class Solution {
218+
func expandBinaryTree(_ root: TreeNode?) -> TreeNode? {
219+
return dfs(root)
220+
}
221+
222+
private func dfs(_ root: TreeNode?) -> TreeNode? {
223+
guard let root = root else { return nil }
224+
225+
let leftChild = dfs(root.left)
226+
let rightChild = dfs(root.right)
227+
228+
if let leftChild = leftChild {
229+
root.left = TreeNode(-1, leftChild, nil)
230+
}
231+
if let rightChild = rightChild {
232+
root.right = TreeNode(-1, nil, rightChild)
233+
}
234+
return root
235+
}
236+
}
237+
238+
```
239+
200240
<!-- tabs:end -->
201241

202242
<!-- solution:end -->

lcp/LCP 67. 装饰树/Solution.swift

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/* class TreeNode {
2+
* var val: Int
3+
* var left: TreeNode?
4+
* var right: TreeNode?
5+
6+
* init() { self.val = 0; self.left = nil; self.right = nil }
7+
* init(_ val: Int) { self.val = val; self.left = nil; self.right = nil }
8+
* 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 expandBinaryTree(_ root: TreeNode?) -> TreeNode? {
18+
return dfs(root)
19+
}
20+
21+
private func dfs(_ root: TreeNode?) -> TreeNode? {
22+
guard let root = root else { return nil }
23+
24+
let leftChild = dfs(root.left)
25+
let rightChild = dfs(root.right)
26+
27+
if let leftChild = leftChild {
28+
root.left = TreeNode(-1, leftChild, nil)
29+
}
30+
if let rightChild = rightChild {
31+
root.right = TreeNode(-1, nil, rightChild)
32+
}
33+
34+
return root
35+
}
36+
}

0 commit comments

Comments
 (0)