PasteRack.org
Paste # 58776
2022-05-15 19:51:50

Fork as a new paste.

Paste viewed 1340 times.


Embed:

  1. #lang racket
  2.  
  3. (struct rbn (color left value right) #:transparent)
  4.  
  5. (define balance
  6.       (match-lambda
  7.         ((or
  8.           ;  balance B (T R (T R a x b) y c) z d
  9.           (rbn 'B (rbn 'R (rbn 'R a x b) y c) z d)
  10.           ;|| B (T R a x (T R b y c)) z d
  11.           (rbn 'B (rbn 'R a x (rbn 'R b y c)) z d)
  12.           ;|| B a x (T R (T R b y c) z d)
  13.           (rbn 'B a x (rbn 'R (rbn 'R b y c) z d))
  14.           ;|| B a x (T R b y (T R c z d))
  15.           (rbn 'B a x (rbn 'R b y (rbn 'R c z d))))
  16.          ;= T R (T B a x b) y (T B c z d)
  17.          (rbn 'R (rbn 'B a x b) y (rbn 'B c z d)))
  18.         ((rbn color a x b) (rbn color a x b))))

=>