2013-08-06 53 views
2

试图为二叉树制作一个包含函数。二分查找树“包含”功能

功能如下:

bool contains(bt_node* top, int data) { 
    if (top == NULL) return false; 
    else { 
     if (data == top->data) return true; 
     else if (data < top->data) contains(top->left, data); 
     else if (data > top->data) contains(top->right, data); 
    } 
} 

功能对,实际上是在树中的值返回false。谁能帮忙?

感谢,

最大

+0

编译器是大约警告有关这样的事情非常好。你打开了警告吗? –

回答

5

你忘了递归调用的返回值来contains。所以你的函数的返回值是未定义的。它更改为以下,使其工作:

bool contains(bt_node* top, int data) { 
    if (top == NULL) return false; 
    else { 
    if (data == top->data) 
     return true; 
    else if (data < top->data) 
     return contains(top->left, data);  //you forgot to return the value 
    else if (data > top->data) 
     return contains(top->right, data); 
    } 
} 
+0

Derrr。谢谢!我在写信后意识到我没有回来。 – mharris7190

0

你可能有小幅虽然做得更好:

bool contains(bt_node* top, int data) { 
    if (top == NULL) return false; 
    if (data == top->data) return true; 
    if (data < top->data) return contains(top->left, data);  
    return contains(top->right, data); 
}