Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 51fef98

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /