Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.84 KB | None | 0 0
  1. #lang racket
  2. ;; LISTA 4 - skomplikowane predykaty oraz predykaty i łączące je twierdzenia o indukcji
  3. ; w szczegolnosci jesli chodzi o listy i drzewa
  4.  
  5.  
  6. (define (mirror tree) ;3
  7.   (if (leaf? tree)
  8.       tree
  9.       (make-node (node-val tree )
  10.                  (mirror (node-right tree))
  11.                  (mirror (node-left tree)))))
  12.  
  13. (define (flatten tree) ;4
  14.   (if (leaf? tree)
  15.       null
  16.       (append (flatten (node-left tree))
  17.             (cons (node-val tree)
  18.                   (flatten (node-right tree))))))
  19.  
  20. (define (treesort xs) ;5
  21.   (define (treesorcik xs tree)
  22.     (if (null? xs)
  23.         tree
  24.        (treesorcik (cdr xs) (bst-insert (car xs) tree))))
  25.   (flatten (treesorcik xs 'leaf)))
  26.  
  27.  
  28.  
  29.  
  30.  
  31. ;; Z WYKLADU
  32.  
  33. ;;; drzewa binarne
  34.  
  35. (define (leaf? x)
  36.   (eq? x 'leaf))
  37.  
  38. (define leaf 'leaf)
  39.  
  40. (define (node? x)
  41.   (and (list? x)
  42.        (= (length x) 4)
  43.        (eq? (car x) 'node)))
  44.  
  45. (define (node-val x)
  46.   (cadr x))
  47.  
  48. (define (node-left x)
  49.   (caddr x))
  50.  
  51. (define (node-right x)
  52.   (cadddr x))
  53.  
  54. (define (make-node v l r)
  55.   (list 'node v l r))
  56.  
  57. (define (tree? t)
  58.   (or (leaf? t)
  59.       (and (node? t)
  60.            (tree? (node-left t))
  61.            (tree? (node-right t)))))
  62.  
  63. ;;; wyszukiwanie i wstawianie w drzewach przeszukiwań binarnych
  64.  
  65. (define (bst-find x t)
  66.   (cond [(leaf? t)         false]
  67.         [(= x (node-val t)) true]
  68.         [(< x (node-val t)) (bst-find x (node-left t))]
  69.         [(> x (node-val t)) (bst-find x (node-right t))]))
  70.  
  71. (define (bst-insert x t)
  72.   (cond [(leaf? t)
  73.          (make-node x leaf leaf)]
  74.         [(< x (node-val t))
  75.          (make-node (node-val t)
  76.                     (bst-insert x (node-left t))
  77.                     (node-right t))]
  78.         [else
  79.          (make-node (node-val t)
  80.                     (node-left t)
  81.                     (bst-insert x (node-right t)))]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement