13,871
社区成员




typedef int T;
class Bstree //左子树小于节根, 右子树不小于根
{
public:
struct Node
{
T data; //树节点保存的数据
Node* L; //树节点的左子树的地址
Node* R; //树节点的右子树的地址
Node(const T& t = T()):data(t), L(), R(){}
};
typedef Node* tree;
private:
tree pRT; //保存树的根节点
int n; //保存树的节点数
public:
Bstree():pRT(NULL), n(){}
~Bstree(){clear();}
void insert(const T& t){ insert(pRT, t); n++; }
void travel()const{ travel(pRT); cout<<endl;}
int size()const { return n;}
void clear(){ clear(pRT); n = 0;}
/* 问题在这里
* 1. 当 tree& find(const T& t) const{ return find(pRT, t);}
* 因为我不修改数据所以加一个const限定,就出错,错误如下
* 2. 把const去掉就ok了,请问问什么呢?我又没有修改数据
*/
tree& find(const T& t){ return find(pRT, t);} //为什么加一个const就出错
public:
static void insert(tree& prt, const T& t);
void travel(const tree& prt) const;
void clear(tree &pst);
tree& find(tree &pst, const T& t);
};