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;}


原创粉丝点击