WIP
This commit is contained in:
parent
8af00ba2d3
commit
be36959f87
4 changed files with 114 additions and 0 deletions
22
.gitignore
vendored
Normal file
22
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
# Created by https://www.gitignore.io/api/racket
|
||||||
|
# Edit at https://www.gitignore.io/?templates=racket
|
||||||
|
|
||||||
|
### Racket ###
|
||||||
|
# gitignore template for the Racket language
|
||||||
|
# website: http://www.racket-lang.org/
|
||||||
|
|
||||||
|
# DrRacket autosave files
|
||||||
|
*.rkt~
|
||||||
|
*.rkt.bak
|
||||||
|
\#*.rkt#
|
||||||
|
\#*.rkt#*#
|
||||||
|
|
||||||
|
# Compiled racket bytecode
|
||||||
|
compiled/
|
||||||
|
*.zo
|
||||||
|
|
||||||
|
# Dependency tracking files
|
||||||
|
*.dep
|
||||||
|
|
||||||
|
# End of https://www.gitignore.io/api/racket
|
||||||
53
bst.rkt
Normal file
53
bst.rkt
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
#lang racket
|
||||||
|
|
||||||
|
(define-struct node (value left right))
|
||||||
|
|
||||||
|
(define (search node value) (cond
|
||||||
|
[(= (node-value node) value) #t]
|
||||||
|
[(empty? node) #f]
|
||||||
|
[(> (node-value node) value) (search (node-left node) value)]
|
||||||
|
[else (search (node-right node) value)]
|
||||||
|
))
|
||||||
|
|
||||||
|
(define (insert node value) (cond
|
||||||
|
[(empty? node) (make-node value empty empty)]
|
||||||
|
[(> (node-value node) value) (make-node (node-value node) (insert (node-left node) value) (node-right node))]
|
||||||
|
[else (make-node (node-value node) (node-left node) (insert (node-right node) value))]
|
||||||
|
))
|
||||||
|
|
||||||
|
(define (bst-from-list lst) (cond
|
||||||
|
[(empty? lst) empty]
|
||||||
|
[else (insert (bst-from-list (rest lst)) (first lst))]
|
||||||
|
))
|
||||||
|
|
||||||
|
(define (rotate-left node) (if (empty? node) empty (let
|
||||||
|
(
|
||||||
|
[x node]
|
||||||
|
[l (node-left node)]
|
||||||
|
[r (node-right node)])
|
||||||
|
(let (
|
||||||
|
[a (if (empty? l) empty (node-left l))]
|
||||||
|
[b (if (empty? l) empty (node-right l))]
|
||||||
|
[c (if (empty? r) empty (node-left r))]
|
||||||
|
[d (if (empty? r) empty (node-right r))]
|
||||||
|
) (
|
||||||
|
(make-node (node-value l)
|
||||||
|
a
|
||||||
|
(make-node (node-value x)
|
||||||
|
b
|
||||||
|
r)
|
||||||
|
)
|
||||||
|
)))))
|
||||||
|
|
||||||
|
(define (height node) (cond
|
||||||
|
[(empty? node) 0]
|
||||||
|
[else (+ 1 (max (height (node-left node)) (height (node-right node))))]
|
||||||
|
))
|
||||||
|
|
||||||
|
(define (avlcheck node) (cond
|
||||||
|
[(empty? node) 0]
|
||||||
|
[(= (height (node-left node)) -1) -1]
|
||||||
|
[(= (height (node-right node)) -1) -1]
|
||||||
|
[(< 1 (abs (- (height (node-left node)) (height (node-right node))))) -1]
|
||||||
|
[else (+ 1 (max (height (node-left node)) (height (node-right node))))]
|
||||||
|
))
|
||||||
5
lambda-calc.rkt
Normal file
5
lambda-calc.rkt
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#lang racket
|
||||||
|
|
||||||
|
(define id (lambda (x) x))
|
||||||
|
|
||||||
|
(define Y (lambda (f) (lambda (x) (f (x x))) (lambda (x) (f (x x)))))
|
||||||
34
rbtree.rkt
Normal file
34
rbtree.rkt
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
#lang racket
|
||||||
|
(define-struct node (value color left right))
|
||||||
|
|
||||||
|
(define (rotate-left node) (make-node
|
||||||
|
(node-value (node-right node))
|
||||||
|
(node-color (node-right))
|
||||||
|
(make-node
|
||||||
|
)
|
||||||
|
(node-right (node-right node))
|
||||||
|
(node-parent node)))
|
||||||
|
|
||||||
|
(define (rotate-left node) (let
|
||||||
|
((a (node-left node))
|
||||||
|
(b node)
|
||||||
|
(c (node-right node))
|
||||||
|
(x (node-left a))
|
||||||
|
(y (node-right a))
|
||||||
|
(z (node-left c))
|
||||||
|
(w (node-right c)))
|
||||||
|
(
|
||||||
|
make-node
|
||||||
|
(value c)
|
||||||
|
(color c)
|
||||||
|
(make-node (value b) (color b) (make-node
|
||||||
|
(value a)
|
||||||
|
(color a)
|
||||||
|
x
|
||||||
|
y
|
||||||
|
|
||||||
|
))
|
||||||
|
|
||||||
|
(define (insert node value) (cond
|
||||||
|
[]
|
||||||
|
[]))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue