我無法搜索節點中最大的通用向量,並返回該節點的地址。我認爲我的邏輯是合理的,但它沒有任何跡象表明爲什麼會一直失敗。任何幫助,將不勝感激。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」或其他調試器中運行它?另外,樹的內容是什麼? –