Я новичок в программировании и работе над реализацией для AVL Trees atm. У меня много проблем и прошу помощи у 1 из них, возможно, после этого я смогу исправить и другие, поскольку все они кажутся довольно похожими.AVL Tree in C, InOrder (и другие функции) не работает
У меня есть следующие функции для печати дерева заказовМои:
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);
}
}
который, кажется, довольно неправильно. У меня были следующие предупреждения:
passing argument 1 of ‘AVL_in_order_walk’ from incompatible pointer type [enabled by default]
AVL_in_order_walk(avlt->root->left);
У меня появилось несколько ошибок/предупреждений/заметок, подобных этому. Я думаю, что у меня есть одна большая проблема, просто понимающая это: когда у меня есть функция, такая как in_order_walk, которую я опубликовал выше, функция не получает узел, он получает все дерево. Я alreyy worte несколько прогулок по деревьям или insertFunctions, но у функции всегда был узел, из которого он начинался, потому что он назывался как «void Function (Node * X)». Теперь у меня есть все дерево (AVLTree * avlt), и я, похоже, не могу использовать рекурсию из-за этого, я ошибаюсь?
Btw: для структур Tree и Node:
struct AVLTree
{
struct AVLNode* root;
int numberOfNodes;
};
struct AVLNode
{
struct AVLNode* left;
struct AVLNode* right;
struct AVLNode* parent;
int value;
int height;
};
Как его называют:
void AVL_in_order_walk(AVLTree* avlt);
Я действительно очень ценю любую помощь, так как я просто не понимаю ..
'недействительным AVL_in_order_walk (AVLTree * avlt);' Это функция _declaration_, а не функция _call_. – Olaf
Да, конечно, это было плохо. Я называю это в основном с помощью «AVL_in_order_walk (avlt)»; – ykykyk
В вашем рекурсивном вызове - AVL_in_order_walk (avlt-> root-> left); аргумент передается типа (AVLNode *), тогда как функция ожидает аргумент типа (AVLTree *). Такая же проблема для вызова функции - AVL_in_order_walk (avlt-> root-> right); –