Skip to content

Commit 51fef98

Browse files
authored
feat: add swift implementation to lcci problem: No.04.05 (doocs#2657)
1 parent 0fafa6e commit 51fef98

File tree

3 files changed

+120
-0
lines changed

3 files changed

+120
-0
lines changed

lcci/04.05.Legal Binary Search Tree/README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,47 @@ public class Solution {
291291
}
292292
```
293293

294+
```swift
295+
/* class TreeNode {
296+
* var val: Int
297+
* var left: TreeNode?
298+
* var right: TreeNode?
299+
*
300+
* init(_ val: Int) {
301+
* self.val = val
302+
* self.left = nil
303+
* self.right = nil
304+
* }
305+
* }
306+
*/
307+
308+
class Solution {
309+
private var prev: TreeNode?
310+
311+
func isValidBST(_ root: TreeNode?) -> Bool {
312+
return dfs(root)
313+
}
314+
315+
private func dfs(_ root: TreeNode?) -> Bool {
316+
guard let root = root else {
317+
return true
318+
}
319+
320+
if !dfs(root.left) {
321+
return false
322+
}
323+
324+
if let prev = prev, prev.val >= root.val {
325+
return false
326+
}
327+
328+
prev = root
329+
330+
return dfs(root.right)
331+
}
332+
}
333+
```
334+
294335
<!-- tabs:end -->
295336

296337
<!-- end -->

lcci/04.05.Legal Binary Search Tree/README_EN.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,47 @@ public class Solution {
328328
}
329329
```
330330

331+
```swift
332+
/* class TreeNode {
333+
* var val: Int
334+
* var left: TreeNode?
335+
* var right: TreeNode?
336+
*
337+
* init(_ val: Int) {
338+
* self.val = val
339+
* self.left = nil
340+
* self.right = nil
341+
* }
342+
* }
343+
*/
344+
345+
class Solution {
346+
private var prev: TreeNode?
347+
348+
func isValidBST(_ root: TreeNode?) -> Bool {
349+
return dfs(root)
350+
}
351+
352+
private func dfs(_ root: TreeNode?) -> Bool {
353+
guard let root = root else {
354+
return true
355+
}
356+
357+
if !dfs(root.left) {
358+
return false
359+
}
360+
361+
if let prev = prev, prev.val >= root.val {
362+
return false
363+
}
364+
365+
prev = root
366+
367+
return dfs(root.right)
368+
}
369+
}
370+
```
371+
331372
<!-- tabs:end -->
332373

333374
<!-- end -->
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
private var prev: TreeNode?
16+
17+
func isValidBST(_ root: TreeNode?) -> Bool {
18+
return dfs(root)
19+
}
20+
21+
private func dfs(_ root: TreeNode?) -> Bool {
22+
guard let root = root else {
23+
return true
24+
}
25+
26+
if !dfs(root.left) {
27+
return false
28+
}
29+
30+
if let prev = prev, prev.val >= root.val {
31+
return false
32+
}
33+
34+
prev = root
35+
36+
return dfs(root.right)
37+
}
38+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy