JF_Jaramillo

Arboles Lab2

Sep 12th, 2020 (edited)
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.96 KB | None | 0 0
  1. (define-struct arbol (valor izq der))
  2.  
  3. (define arbolprueba1 (make-arbol 20
  4.             (make-arbol 10
  5.                   empty
  6.                   (make-arbol 7 empty empty) )
  7.             (make-arbol 24
  8.                         (make-arbol 22 empty empty)
  9.                         (make-arbol 30 empty empty) )
  10.             ))
  11.  
  12. (define arbolprueba2 (make-arbol 20
  13.             (make-arbol 10
  14.                   empty
  15.                   (make-arbol 7 empty empty) )
  16.             (make-arbol 24
  17.                         (make-arbol 22 empty empty)
  18.                         (make-arbol 30 empty empty) )
  19.             ))
  20.  
  21. (define (comparar-arboles arbol1 arbol2)
  22.   (comparar-listas (recorrido-inorden arbol1) (recorrido-inorden arbol2) )
  23.   )
  24.  
  25. (define (recorrido-inorden arb)
  26.   (cond
  27.     [(null? arb) '()]
  28.     [else
  29.       (append
  30.        (recorrido-inorden  (arbol-izq arb))
  31.        (cons (arbol-valor arb) empty)
  32.        (recorrido-inorden  (arbol-der arb)))
  33.      ]
  34.     ))
  35.  
  36.  
  37.  
  38. (define (comparar-listas lista1 lista2)
  39.   (cond
  40.     [ (or (and (empty? lista1) (not (empty? lista2)) ) (and (not (empty? lista1)) (empty? lista2) ) ) #F]
  41.     [ (and (empty? lista1) (empty? lista2) ) #T]
  42.     [ (equal? (first lista1) (first lista2) ) (comparar-listas (rest lista1) (rest lista2) )]
  43.     [else #F]
  44.     )
  45.   )
  46.  
  47.  
  48.  
  49. (define (esta-en-arbol arbol lista)
  50.   (local
  51.     ((define (esta-en-lista lista1 lista2)
  52.   (cond
  53.     [ (empty? lista2) #T ]
  54.     [ (empty? lista1) #F ]
  55.     [ (empty? (first lista1)) (esta-en-lista (rest lista1) lista2) ]
  56.     [ (not (empty? (first lista1))) (cond
  57.                                       [(= (first lista1) (first lista2) ) (esta-en-lista (recorrido-inorden arbol) (rest lista2))]
  58.                                       [else (esta-en-lista (rest lista1) lista2 ) ]) ]
  59.    
  60.     [else (esta-en-lista (rest lista1) lista2 ) ]
  61.     )
  62.   ))
  63.    
  64.   (esta-en-lista (recorrido-inorden arbol) lista)
  65.   ))
  66.  
  67. (esta-en-arbol arbolprueba1 (list 20 10 7 24 22 30))
Add Comment
Please, Sign In to add comment