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 !!!!
Pouvez-vous m'aider SVP car là je n'ai aucune hypothèse de recherche. Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager