#include
#include
using namespace std;
struct BSTNode
{
BSTNode left;
BSTNode *right;
int data;
BSTNode(int value){
data=value;
left=NULL;
right=NULL;
}
};
class BST{
public:
BST(){
root=NULL;
}
void insert(BSTNode *&ptr,int value){
if(ptr==NULL){
ptr=new BSTNode(value);
return ;
}
else if(ptr->data>value) insert(ptr->left,value);
else if(ptr->dataright,value);
else return ;
}
bool remove(BSTNode *&ptr,int value){
return false;
}
void printtree(BSTNode *ptr){
if(ptr!=NULL){
queue<BSTNode> myque;
myque.push(ptr);
BSTNode temp;
while(!myque.empty()){
temp=myque.back();
myque.pop();
cout<data<<" ";
if(temp->left!=NULL) myque.push(temp->left);
if(temp->right!=NULL) myque.push(temp->right);
}
}
}
BSTNode getroot(){
return root;
}
//public:
BSTNode *root;
};
void main(){
BST *tree = new BST;
int value;
cout<<"二叉搜索树为"<
tree->printtree(tree->getroot());
cout<
cin>>value;
// int &a=value;
// int &b=4;
while(value!=EOF){
tree->insert(tree->root,value);//通过指针直接获得root,函数调用的参数不会出错
tree->insert(tree->getroot(),value);//通过get方法获得root,函数调用的参数出错,提示“非常量引用的初始值必须为左值”
BSTNode *test = tree->getroot();//如果先通过get方法获得root并赋值给test,在将test传递给函数,参数不会出错
tree->insert(test,value);
cout<getroot()<<"-----"<root;
cout<<"二叉搜索树为"<
tree->printtree(tree->getroot());
cout<
cin>>value;
}
}
通过函数获得数据成员和通过指针获得数据成员有什么区别?