Type de nouveaux arbres et fonctions récursives ....Récursion et recherche d'arbre dans C?
Je connais les bases de la création d'une pile et de la création de fonctions récursives.
Je fais une recherche de traversée précommandée qui devrait renvoyer l'adresse d'un noeud dans une arborescence lorsque la valeur recherchée correspond à la valeur de ce noeud.
J'ai des problèmes avec la partie retour ... J'ai essayé de lire certaines choses sur les piles d'appels ... mais je ne comprends pas comment l'implémenter. Est-ce déjà là ou dois-je faire cette pile? Comment puis-je faire cette pile si je dois le faire? Je l'ai lu doit être proportionnelle à la hauteur de l'arbre ... Est-ce le meilleur moyen de trouver la hauteur de l'arbre pour faire une autre fonction qui fait cela?
Voici un code que j'ai écrit jusqu'à présent: Arbre et NodePtr est un pointeur vers un nœud ...
NodePtr SearchTree(int v, Tree T)
{
//printf(" %i \n", T->value);
if(T->value == v)
{
return T;
}
else
{
if(T->Left != NULL) SearchTree(value, T->Left);
if(T->Right != NULL) SearchTree(value, T->Right);
}
return NULL;
}
Il y a un bug dans ce code. Vois ma réponse. –
Si la sous-arborescence de gauche est non nulle, et que la recherche ne trouve pas la valeur, elle ne regarde pas dans le sous-arbre de droite. Il ne trouvera pas le noeud approprié parfois. –
@Ira, ouais, j'ai vu ça aussi, mais le bug est dans le code du questionneur ... sommes-nous censés résoudre tous ses bugs ou répondre à sa question? ;) Réponse préemptive mise à jour néanmoins. –