c++二叉排序树+中序遍历
来源:互联网 发布:单片机技能小组方案 编辑:程序博客网 时间:2024/06/07 18:28
/* cpp 二叉排序树 尽管二叉排序树很简单,但是第一次写二叉排序树的类,还是有一点的麻烦。 不知道如何写递归,如何写成员函数等。。。 第一次总是会很纠结的,所以发篇博文来纪念下自己写的第一个C++类 BY Mr_Zys*/#include<iostream>#include<Cstring>#define MAXN 10000using 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;}