34 lines
No EOL
1.4 KiB
Racket
34 lines
No EOL
1.4 KiB
Racket
#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
|
|
[]
|
|
[])) |