Skip to content

Commit 72536f4

Browse files
authored
feat: add swift implementation to lcci problem: No.04.04 (#2653)
1 parent 0cfd4c6 commit 72536f4

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

lcci/04.04.Check Balance/README.md

+34
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,40 @@ function isBalanced(root: TreeNode | null): boolean {
167167
}
168168
```
169169

170+
```swift
171+
/* class TreeNode {
172+
* var val: Int
173+
* var left: TreeNode?
174+
* var right: TreeNode?
175+
*
176+
* init(_ val: Int) {
177+
* self.val = val
178+
* self.left = nil
179+
* self.right = nil
180+
* }
181+
* }
182+
*/
183+
184+
class Solution {
185+
func isBalanced(_ root: TreeNode?) -> Bool {
186+
return dfs(root) >= 0
187+
}
188+
189+
private func dfs(_ root: TreeNode?) -> Int {
190+
guard let root = root else {
191+
return 0
192+
}
193+
194+
let leftHeight = dfs(root.left)
195+
let rightHeight = dfs(root.right)
196+
if leftHeight < 0 || rightHeight < 0 || abs(leftHeight - rightHeight) > 1 {
197+
return -1
198+
}
199+
return max(leftHeight, rightHeight) + 1
200+
}
201+
}
202+
```
203+
170204
<!-- tabs:end -->
171205

172206
<!-- end -->

lcci/04.04.Check Balance/README_EN.md

+34
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,40 @@ function isBalanced(root: TreeNode | null): boolean {
210210
}
211211
```
212212

213+
```swift
214+
/* class TreeNode {
215+
* var val: Int
216+
* var left: TreeNode?
217+
* var right: TreeNode?
218+
*
219+
* init(_ val: Int) {
220+
* self.val = val
221+
* self.left = nil
222+
* self.right = nil
223+
* }
224+
* }
225+
*/
226+
227+
class Solution {
228+
func isBalanced(_ root: TreeNode?) -> Bool {
229+
return dfs(root) >= 0
230+
}
231+
232+
private func dfs(_ root: TreeNode?) -> Int {
233+
guard let root = root else {
234+
return 0
235+
}
236+
237+
let leftHeight = dfs(root.left)
238+
let rightHeight = dfs(root.right)
239+
if leftHeight < 0 || rightHeight < 0 || abs(leftHeight - rightHeight) > 1 {
240+
return -1
241+
}
242+
return max(leftHeight, rightHeight) + 1
243+
}
244+
}
245+
```
246+
213247
<!-- tabs:end -->
214248

215249
<!-- end -->
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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 Solution {
15+
func isBalanced(_ root: TreeNode?) -> Bool {
16+
return dfs(root) >= 0
17+
}
18+
19+
private func dfs(_ root: TreeNode?) -> Int {
20+
guard let root = root else {
21+
return 0
22+
}
23+
24+
let leftHeight = dfs(root.left)
25+
let rightHeight = dfs(root.right)
26+
if leftHeight < 0 || rightHeight < 0 || abs(leftHeight - rightHeight) > 1 {
27+
return -1
28+
}
29+
return max(leftHeight, rightHeight) + 1
30+
}
31+
}

0 commit comments

Comments
 (0)