J'arrive à la fin de mon cours et je me trouve sec devant 2 problèmes sur les arbres binaires. Je n'ai aucune hypothèse et le ou les erreurs doivent être énormes:
-- 1er problème. Impossible de tester la présence ou d'une feuille
La réponse est n(importe quoi !!!!
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
;;; ab-B2 : -> ArbreBinaire (string)
;;; (ab-B2) rend l'arbre B2
(define (ab-B2)
(let* ((B1 (ab-noeud "f" (ab-vide) (ab-vide)))
(B2 (ab-noeud "g" (ab-vide) (ab-vide)))
(B1-1 (ab-noeud "c" (ab-vide) (ab-vide)))
(B3 (ab-noeud "e" B2 (ab-vide)))
(B4 (ab-noeud "d" B3 B1))
(B5 (ab-noeud "b" B1-1 B4)))
(ab-noeud "a" B5 (ab-vide))))
;;; ab-B1 : --> ArbreBinaire (nat)
;;; (ab-B1) rend l'arbre B1
(define (ab-B1)
(let* ((B1 (ab-noeud 44 (ab-vide) (ab-vide)))
(B2 (ab-noeud 36 (ab-vide) (ab-vide)))
(B1-2 (ab-noeud 154 (ab-vide) (ab-vide)))
(B2-2 (ab-noeud 22 (ab-vide) (ab-vide)))
(B3 (ab-noeud 2 B1 (ab-vide)))
(B4 (ab-noeud 2 B2-2 B2))
(B5 (ab-noeud 15 (ab-vide) B1-2))
(B6 (ab-noeud 99 B5 B3)))
(ab-noeud 1 B4 B6)))
;;; ab-feuille? : AbreBinaire (alpha) -> bool
;;; (ab-feuille? B) rend vrai ssi B est une feuille
(define (ab-feuille? B) ;;; vrai si B est une feuille
(and (not (pair? (ab-gauche B))) ;;; ab-gauche vide
(not (pair? (ab-droit B))))) ;;; ab-droit vide
(ab-feuille? (ab-B1))
; (ab-feuille? (ab-noeud "e" "g" (ab-vide)))
---2ème problème : impossible de créer un arbre binaire
(define (ab-vide? B)
(not (pair? B)))
;;; Liste (élèmentsquelconques ) --> liste ( etiq , arbre vide gauche, noeud à droite)
;;; si liste vide arbre vide
(define (liste2arbre L)
(if (and (pair? L) (pair? (cdr L)) )
(let* ((a-etiquette (car L))
(a-droit (cadr L))
(k (liste2arbre (cdr L) )))
(cons (ab-noeud a-etiquette () a-droit) k))
(list (ab-noeud (car L) () ()))))
(define (xxxx L)
(let ((p (liste2arbre L)))
(define (ab-nombre-noeuds x)
(if (ab-vide? x)
0
(+ 1 (ab-nombre-noeuds (ab-gauche x))
(ab-nombre-noeuds (ab-droit x)))))
(ab-nombre-noeuds p)))
(trace xxxx) (trace liste2arbre) (xxxx (list "1" "2" "3"))
;;; REPONSE : procedure application: expected procedure, given: #<procedure:self> #<procedure:self> #<procedure:self>); arguments were: get-left |
Pouvez-vous m'aider SVP car là je n'ai aucune hypothèse de recherche. Merci d'avance.