Advertisement
Guest User

Untitled

a guest
Apr 15th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.21 KB | None | 0 0
  1. #lang racket
  2.  
  3. (define (node v l r)
  4.   (list 'node v l r))
  5.  
  6. (define (node? t)
  7.   (and
  8.    (list? t)
  9.    (= (length t) 4)
  10.    (eq? 'node (car t))))
  11.  
  12. (define (node-val t)
  13.   (second t))
  14.  
  15. (define (node-left t)
  16.   (third t))
  17. (define (node-right t)
  18.   (fourth t))
  19. (define (leaf v)
  20.   (list 'leaf v))
  21.  
  22. (define (leaf? t)
  23.   (and
  24.    (list? t)
  25.    (= (length t) 2)
  26.    (eq? (car t) 'leaf)))
  27.  
  28. (define (leaf-val t)
  29.   (second t))
  30.  
  31. (define (tree? t)
  32.   (or
  33.    (leaf? t)
  34.    (and
  35.     (node? t)
  36.     (tree? (node-right t))
  37.     (tree? (node-left t)))))
  38.  
  39. (define (tree-min t)
  40.   (cond [(leaf? t) (leaf-val t)]
  41.         [else (let ((mini-left (tree-min (node-left t)))
  42.                     (mini-right (tree-min (node-right t)))
  43.                     (mini-node (node-val t)))
  44.                 (cond [(and (<= mini-right mini-node)
  45.                             (<= mini-right mini-left)) mini-right]
  46.                       [(and (<= mini-left mini-node)
  47.                             (<= mini-left mini-right)) mini-left]
  48.                       [else mini-node]))]))
  49.  
  50. (define drzefko (node 4
  51.                       (node 3 (node 6 (node 1 (leaf 14) (leaf 3)) (node 100 (leaf 5) (leaf 13))) (leaf 1))
  52.                       (leaf 4)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement