我无法搜索节点中最大的通用向量,并返回该节点的地址。我认为我的逻辑是合理的,但它没有任何迹象表明为什么会一直失败。任何帮助,将不胜感激。C使用递归错误的AVL树搜索
struct vector
{
int size;
int capacity;
Item* data;
};
typedef struct vector GenericVector;
typedef struct Node Tree;
struct Node
{
Tree* left;
Tree* right;
GenericVector* data;
int height;
};
void* find_largest_bin(void* root)
{
Tree* pRoot = (Tree*)root;
if (pRoot == NULL)
return NULL;
Tree* left = pRoot->left;
Tree* right = pRoot->right;
left= find_largest_bin(pRoot->left);
right = find_largest_bin(pRoot->right);
//if there is only one leg
if (right == NULL && left->data->size > pRoot->data->size)
return left;
else if (right == NULL && left->data->size < pRoot->data->size)
return pRoot;
else if (left == NULL && right->data->size > pRoot->data->size)
return right;
else if (left == NULL && right->data->size < pRoot->data->size)
return pRoot;
//if there are two legs
else if (left->data->size > pRoot->data->size && left->data->size > right->data->size)
return left;
else if (right->data->size > pRoot->data->size && right->data->size > left->data->size)
return right;
else
return pRoot;
}
这似乎可能是一个家庭作业问题。家庭作业问题是受欢迎的,当问一个问题时,应该清楚这是一个家庭作业问题。如果没有,继续。 –
我没有意识到,我的道歉(我对这个网站上发布的礼仪不太熟悉),我会在将来的帖子中记住这一点。它是学校大型实验室项目中的众多功能之一。我不想包括其余部分,因为我知道他们工作,并且会增加不必要的混淆。 – VideoGameNerd
“失败”并不是一个非常具体的错误描述。你能提供一个更精确的描述吗?它是否产生了不正确的答案?或者它崩溃了?你有没有在“gdb”或其他调试器中运行它?另外,树的内容是什么? –