Im un débutant à la programmation et de travailler à une mise en œuvre pour AVL arbres ATM. J'ai eu beaucoup de problèmes et demandé de l'aide à l'un d'entre eux, peut-être que je serai en mesure de réparer les autres après, car ils semblent tous assez similaires.AVL Tree dans C, InOrder (et d'autres fonctions) ne fonctionne pas
J'ai la fonction suivante pour imprimer l'arbre afinde:
void AVL_in_order_walk(AVLTree* avlt)
{
if(avlt!=NULL){
AVL_in_order_walk(avlt->root->left);
printf("%d",avlt->root->value);
AVL_in_order_walk(avlt->root->right);
}
}
Ce qui semble être assez mal. J'ai eu des avertissements suivants:
passing argument 1 of ‘AVL_in_order_walk’ from incompatible pointer type [enabled by default]
AVL_in_order_walk(avlt->root->left);
J'ai eu plusieurs erreurs/avertissements/notes comme celui-ci. Je pense que j'ai un gros problème en comprenant simplement ceci: Quand j'ai une fonction comme l'in_order_walk que j'ai posté ci-dessus, la fonction n'obtient pas un noeud, elle obtient l'arbre entier. J'ai déjà parcouru quelques marches à travers les arbres, ou insertFunctions, mais la fonction a toujours eu un nœud à partir duquel elle a été appelée, car elle s'appelait "void Function (Node * X)". Maintenant j'ai l'arbre entier (AVLTree * avlt) et je ne semble pas pouvoir utiliser la récursion à cause de ça, ai-je tort?
BTW: Structs pour Arbre et Noeud:
struct AVLTree
{
struct AVLNode* root;
int numberOfNodes;
};
struct AVLNode
{
struct AVLNode* left;
struct AVLNode* right;
struct AVLNode* parent;
int value;
int height;
};
Comment l'appelle:
void AVL_in_order_walk(AVLTree* avlt);
Je voudrais vraiment vraiment apprécier tout type d'aide que je juste ne l'obtenir ..
'AVL_in_order_walk void (* AVLTree avlt)' C'est une fonction _declaration_, pas une _call_ fonction. – Olaf
Oui bien sûr c'était mon mauvais. Je l'appelle dans le principal avec "AVL_in_order_walk (avlt);" – ykykyk
Dans votre appel récursif - AVL_in_order_walk (avlt-> root-> left) ;, l'argument passé est de type (AVLNode *) tandis que la fonction attend un argument de type (AVLTree *). Même problème pour l'appel de fonction - AVL_in_order_walk (avlt-> root-> right); –