/* cpp 二叉排序树
尽管二叉排序树很简单,但是第一次写二叉排序树的类,
还是有一点的麻烦。
不知道如何写递归,如何写成员函数等。。。
第一次总是会很纠结的,所以发篇博文来纪念下自己写的
第一个C++类
BY Mr_Zys
*/
#include<iostream>
#include<Cstring>
#define MAXN 10000
using namespace std;
typedef struct Node{
char data[MAXN];
Node *l;
Node *r;
} Node,*pointNode;
class BTree{
public:
BTree();
//void Creat();
void Insert(char *s);
void Query();
void Query(pointNode r);
pointNode Getroot();
~BTree();
private:
pointNode root;
};
BTree::BTree(){
root=NULL;
}
void BTree::Insert(char *s){
if(root==NULL){
root=new Node;
strcpy(root->data,s);
root->l=NULL;
root->r=NULL;
return;
}
pointNode T=root,P;
while(T!=NULL){
if(strcmp(T->data,s)==0){
cout<<"REERO: Data has existed;"<<endl;
return;
}
P=T;
T=strcmp(T->data,s)>0?T->l:T->r;
}
T=new Node;
strcpy(T->data,s);
T->l=NULL;
T->r=NULL;
if(strcmp(P->data,s)>0) P->l=T;
if(strcmp(P->data,s)<0) P->r=T;
cout<<"Now is the root's data:"<<root->data<<endl;
}
pointNode BTree::Getroot(){
return root;
}
void BTree::Query(pointNode r){
if(r!=NULL){
Query(r->l);
cout<<r->data<<endl;
Query(r->r);
}
}
void BTree::Query(){
pointNode r;
r=Getroot();
Query(r);
}
BTree::~BTree(){}
int main(){
BTree tree;
char s[MAXN];
while(1){
cout<<"Please Input The Information: ";
cin>>s;
if(s[0]=='#') break;
tree.Insert(s);
}
tree.Query();
return 0;
}
c++二叉排序树+中序遍历
最新推荐文章于 2024-07-17 21:15:05 发布