Bonjour,
j'ai un TP à rendre sur les arbres binaires de recherche. Mais bizarrement je bloque sur cette question:
Définir une fonction qui permet de savoir si son argument est un arbre de recherche
Ainsi, j'ai écrit deux fonctions:l'une(arbre_correct?) qui teste si l'arbre est un arbre binaire et l'autre qui reprend cette fonction et qui se spécialise sur les caractéristiques d'un arbre binaire de recherche
Apparemment, ce qui coince c'est l'appel récursif.Car j'obtiens un true sans les deux dernières lignes de arbre_bon?Mais je comprend pas pourquoi, peut être que quelqu'un peux m'aiguiller?
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 (defun arbre_correct?(a) (or (arbre_vide? a) (and (listp (arbre_sag a)) (listp (arbre_sad a)) (null (cdddr a)) (arbre_correct? (arbre_sag a)) (arbre_correct? (arbre_sad a)) ) ) ) (defun arbre_bon?(a) (and (arbre_correct? a) (if (not (null (arbre_sad a)))(< (arbre_rac a) (arbre_rac (arbre_sad a)))) (if (not (null (arbre_sag a)))(> (arbre_rac a) (arbre_rac (arbre_sag a)))) (arbre_bon? (arbre_sag a)) (arbre_bon? (arbre_sad a)) ) )
Merci d'avance pour votre aide
Si j'ai oublié des détails demandez moi.
Partager