(define longitud (lambda (l) (if (null? l) 0 (+ 1 (longitud(cdr l))) ) ) ) (define es_hoja (lambda (arbol) (if (null? arbol) #t (if (eqv? (car arbol) 'nil) (es_hoja (cdr arbol)) #f ) ) ) ) (define es_arbol (lambda (arbol) (if (not (es_hoja (cdr arbol))) #t #f ) ) ) (define ramaizq (lambda (arbol) (car (cdr arbol)) ) ) (define ramader (lambda (arbol) (cddr arbol) ) ) (define ramas (lambda (arbol) (cdr arbol) ) ) (define compara (lambda (arbol1 arbol2) (if (es_arbol arbol1) (if (es_arbol arbol2) (if (and (completo arbol1) (completo arbol2)) #t #f ) #f ) (if (es_hoja (cdr arbol1)) (if (es_hoja (cdr arbol2)) #t #f ) #f ) ) ) ) (define completo (lambda (arboln) (if (es_hoja (cdr arboln)) #t (if (compara (ramaizq arboln) (car (ramader arboln))) #t #f ) ) ) ) (completo '(a (a (a nil nil) (a nil nil) (a nil nil)) (a (a nil nil) (a nil nil) (a nil nil)) (a (a nil nil) (a nil nil) (a nil nil)) ) )