我正在创建一个代表LCRS树的类,我的搜索功能有问题。这是我到目前为止所得到的:
lcrs.h:
using namespace std;
#include <cstdlib>
#include <iostream>
class node{
public:
int data;
node *right;
node *below;
};
class lcrs{
public:
int height;
node *root;
bool search(int);
void print(lcrs);
void insert(int);
void del(int);
lcrs()
{
root = NULL;
}
};
这是lcrs.cpp:
using namespace std;
#include "lcrs.h"
bool lcrs::search(int x)
{
if(root == NULL)
return false;
else
{
if(root->data == x)
return true;
else
{
while(right != NULL && below != NULL)
{
if(right->data == x || below->data == x)
return true;
}
return false;
}
}
}
这是我的错误消息:
lcrs.cpp: In member function ‘bool lcrs::search(int)’:
lcrs.cpp:21:26: error: ‘below’ was not declared in this scope
lcrs.cpp:23:15: error: request for member ‘data’ in ‘std::right’, which is of non-class type ‘std::ios_base&(std::ios_base&)’
据我所知,在没有先创建对象的情况下,我无法访问“正确”和“正确”的成员,但还有另一种方法可以访问它们吗?我只是想看看“数据”中的内容。如果没有首先实例化节点,我不会看到如何做到这一点。
非常感谢您的帮助。
答案 0 :(得分:1)
您是否尝试使用递归执行此操作?您需要将当前节点作为函数参数。
这是你想要做的(伪代码)吗?
search(int x, node* current)
if node == NULL return false
else
if node->data == x return true
else
return search(x, node->right) || search(x, node->below);
修改:您可以通过search(x, root)
启动它来调用它。