2014-10-11 116 views
-2

我做了兩個函數,一個是在紅黑樹中查找並返回最小密鑰,另一個函數返回指向特定節點的指針,並將該節點的密鑰作爲輸入。除了具有最高密鑰和最低密鑰的節點之外,這些功能都可以正常工作。程序停止工作併發出C4716警告。 鍵是 int array [] = {50,26,45,34,23,78,84,93,14,16,100,57,62};警告C4715:並非所有的控制路徑都返回一個值C++

int Tree::findsmallest() 
{ 
return findsmallestprivate(root); 
} 

int Tree::findsmallestprivate(node* ptr) 
{ 
if (root != NULL) 
{ 
    if (ptr->left != NULL) 
    { 
     findsmallestprivate(ptr->left); 
    } 
    else 
    { 
     return ptr->key; 
    } 
} 
else 
{ 
    cout << "There was no tree" << endl; 
    return -1; 
} 
} 
Tree::node* Tree::returnnode(int key) 
{ 
return returnnodepri(key, root); 
} 
Tree::node* Tree::returnnodepri(int key, node* ptr) 
{ 
    if (ptr->key == key) 
    { 
     return ptr; 
    } 
    else if (ptr->key < key) 
    { 
     returnnodepri(key, ptr->right); 
    } 
    else if (ptr->key > key) 
    { 
     returnnodepri(key, ptr->left); 
    } 
else 
{ 
    return NULL; 
} 
} 

回答

1

if (ptr->left != NULL)中,您無法返回值,如編譯器所述。你需要返回一個值。

+0

是的工作。謝謝! – 2014-10-11 13:04:10

0

findsmallestprivate

如果條件ptr->left != NULL成立,你不回任何東西。您只需運行findsmallestprivate(ptr->left);,然後退出,但不返回預期的int

warning C4715: not all control paths return a value意味着您有一個函數,根據其輸入有時可能不會返回值。

您的其他問題與findsmallestprivate相同。

returnnodepri

ptr->key < key或情況ptr->key > key你不返回預期Tree::node*。您運行returnnodepri,但不會因此返回任何值。

相關問題