File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 -->
Original file line number Diff line number Diff 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 -->
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