我编写了在二叉树上执行各种操作的程序。一开始我设置了空根指针,然后调用了几个insert()
向树添加新节点的函数。
最后,我调用search()
函数找到请求的结构节点并返回它。
insert()
函数有两个参数 - 对根指针的引用和常量 int 键,它将被转换为节点结构并添加到树中
search()
函数采用“恒定根指针” - 不是引用,因为我想直接对本地指针进行操作,并且我不希望更改它。它需要的另一个参数是 int key。
这是整个程序:
#include <iostream>
struct node
{
node *p; // parent
node *left, *right;
int key;
};
void insert(node *&root, const int key)
{
node newElement = {};
newElement.key = key;
node *y = NULL;
while(root)
{
if(key == root->key) exit(EXIT_FAILURE);
y = root;
root = (key < root->key) ? root->left : root->right;
}
newElement.p = y;
if(!y) root = &newElement;
else if(key < y->key) y->left = &newElement;
else y->right = &newElement;
}
node* search(const node *root, const int key)
{
while( (root) && (root->key != key) )
root = (key < root->key) ? root->left : root->right;
return root;
}
int main()
{
using namespace std;
node *root = NULL;
insert(root, 5);
insert(root, 2);
cout << search(root, 5)->key << endl;
return 0;
}
我的问题是 -为什么搜索功能不起作用?它显示错误 - 返回值类型与函数类型不匹配。但我归还了指针,就像声明中所说的那样!
另外,"const"
这里的关键字可以吗?