File tree 3 files changed +99
-0
lines changed
3 files changed +99
-0
lines changed Original file line number Diff line number Diff line change @@ -167,6 +167,40 @@ function isBalanced(root: TreeNode | null): boolean {
167
167
}
168
168
```
169
169
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
+
170
204
<!-- tabs: end -->
171
205
172
206
<!-- end -->
Original file line number Diff line number Diff line change @@ -210,6 +210,40 @@ function isBalanced(root: TreeNode | null): boolean {
210
210
}
211
211
```
212
212
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
+
213
247
<!-- tabs: end -->
214
248
215
249
<!-- end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments