我想在二叉搜索樹中找到最小值。我寫了下面的代碼。但是,當我從main調用函數並且pribt返回值時,它始終打印爲0。二進制搜索樹錯誤
cal請你幫忙。
int findMinimumValue(struct tnode* node)
{
int min=node->data;
if(node->lchild==NULL)
{
return min;
}
else
findMinimumValue(node->lchild);
}
我想在二叉搜索樹中找到最小值。我寫了下面的代碼。但是,當我從main調用函數並且pribt返回值時,它始終打印爲0。二進制搜索樹錯誤
cal請你幫忙。
int findMinimumValue(struct tnode* node)
{
int min=node->data;
if(node->lchild==NULL)
{
return min;
}
else
findMinimumValue(node->lchild);
}
你好像沒有真正給您回電話遞歸的價值:
int findMinimumValue(struct tnode* node)
{
int min=node->data;
if(node->lchild==NULL)
{
return min;
}
else
{
// you need the return here or you're never returning
// anything in this branch
return findMinimumValue(node->lchild);
}
}
爲此事不是真的很需要的變量,因爲它是什麼:
int findMinimumValue(struct tnode* node)
{
if (node->lchild == NULL)
return node->data;
else
return findMinimumValue(node->lchild);
}
哦,就像一提:我會考慮使用這個非遞歸版本,而不是;它也很簡單:
int findMinimumValue(struct tnode* node)
{
while (node->lchild != NULL)
node = node->lchild;
return node->data;
}
bleah,寫回答太晚不得不編輯兩次,因爲不知何故,我從「沒有在這個分支返回「鍵入」min =「。在兩個地方。 – shelleybutterfly
謝謝。現在它工作了。這是我身邊的一個愚蠢的錯誤。遞歸中有很多問題。你可以請建議一些教程鏈接ets來改進概念。 – aj983
:)我一直在那裏,不用擔心。遞歸可能很難。至於教程,一個快速的谷歌翻了這個,它似乎很酷:http://erwnerve.tripod.com/prog/recursion/ – shelleybutterfly
這是什麼語言? (請適當地標記問題。)你有沒有試圖調試這個? –
如果你調高了編譯器的警告級別,你會立即發現問題。 –
我在運行和編譯代碼時沒有收到任何錯誤。 – aj983