PasteRack.org
Paste # 30996
2024-10-24 23:42:36

Fork as a new paste.

Paste viewed 171 times.


Embed:

  1. #lang racket
  2. (define (tree-insert num tree)
  3.   (cond
  4.     ((null? tree) (list num)) ; Base case: empty tree, insert num as root
  5.     ((<= num (car tree)) ; If num is smaller or equal to the root
  6.      (list (car tree) (tree-insert num (if (null? (cadr tree)) '() (cadr tree))) (if (null? (caddr tree)) '() (caddr tree)))) ; Recursively insert into left subtree
  7.     (else ; If num is larger than the root
  8.      (list (car tree) (if (null? (cadr tree)) '() (cadr tree)) (tree-insert num (if (null? (caddr tree)) '() (caddr tree))))))) ; Recursively insert into the right subtree
  9.  
  10. ;; Testing the function
  11. (tree-insert 8 '())             ; Expected: '(8)
  12. (tree-insert 12 '(8))           ; Expected: '(8 ((12)))
  13. (tree-insert 3 '(8))            ; Expected: '(8 ((3) ()))
  14. (tree-insert 12 '(8 ((3) ())))  ; Expected: '(8 ((3) (12)))
  15. (tree-insert 4 '(8 ((3) (12)))) ; Expected: '(8 ((3 ((4))) (12)))

=>

'(8)

cadr: contract violation

  expected: (cons/c any/c pair?)

  given: '(8)

cadr: contract violation

  expected: (cons/c any/c pair?)

  given: '(8)

caddr: contract violation

  expected: (cons/c any/c (cons/c any/c pair?))

  given: '(8 ((3) ()))

<=: contract violation

  expected: real?

  given: '(3)