• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評論-173  文章-70  trackbacks-0

            #include <iostream>
            #include <iomanip>
            using namespace std;

            typedef struct BinaryTree
            {
             int data;
             struct BinaryTree *l;
             struct BinaryTree *r;
            }*BiTree,BiNode;
             
            class BiSearchT
            {
            private:
             BiTree root;
            public:
             BiSearchT() :root(NULL) {}
             int PreOrderTraverse(BiTree t,int (*Visit)(int e));
             int InOrderTraverse(BiTree t,int (*Visit)(int e));
             int InsertBST(BiTree *t,int e);
             void Delete(BiTree *p);
             bool DeleteBST(BiTree *t,int key);
             bool SearchBST(BiTree t,int key,BiTree f,BiTree *p);
            };
            //先序遍歷二叉樹T
            int BiSearchT::PreOrderTraverse(BiTree t,int (*Visit)(int d))
            {
             if(t)
             {
              if(Visit(t->data))
               if(PreOrderTraverse(t->l,Visit))
                if(PreOrderTraverse(t->r,Visit)) return 1;
                return 0;
                }else return 1;
            }
            //中序遍歷二叉樹T
            int BiSearchT::InOrderTraverse(BiTree t,int (*Visit)(int d))
            {
             if(t)
             {
              if(InOrderTraverse(t->l,Visit))
               if(Visit(t->data))
                if(InOrderTraverse(t->r,Visit)) return 1;
                return 0;
                }else return 1;
            }
            //二叉排序樹上的查找遞歸算法
            bool BiSearchT::SearchBST(BiTree t,int key,BiTree f,BiTree *p)
            {
             if(!t)
              {*p=f;return false;}
              else if(key==t->data) {*p=t;return true;}
              else if(key<t->data) SearchBST(t->l,key,t,p);
              else SearchBST(t->r,key,t,p);
            }
            //插入算法
            int BiSearchT::InsertBST(BiTree *t,int e)
            {
             BiTree p;
             BiTree s;
             if(!SearchBST(*t,e,NULL,&p))
             {
              s=(BiTree)malloc(sizeof(BiNode));
              s->data=e;s->l=s->r=NULL;
              if(!p) *t=s;
              else if(e<p->data) p->l=s;
              else p->r=s;
              return true;
             }
             else return false;
            }
            //在二叉樹中刪除一個結(jié)點
            void BiSearchT::Delete(BiTree *p)
            {
             BiTree q,s;
             if(!(*p)->r)
             {
              q=(*p);
              (*p)=(*p)->l;
              free(q);
             }
             else if(!(*p)->l)
             {
              q=(*p);
              (*p)=(*p)->r;
              free(q);
             }
             else
             {
              q=s=(*p)->l;
              while(s->r) s=s->r;
              s->r=(*p)->r;
              free(*p);
              (*p)=q;
             }
            }
            //二叉排序樹的刪除
            bool BiSearchT::DeleteBST(BiTree *t,int key)
            {
             if(*t!=NULL)
             {
              if(key==(*t)->data) Delete(t);
              else
               if(key<(*t)->data) DeleteBST(&((*t)->l),key);
               else DeleteBST(&((*t)->r),key);
               return true;
             }
               else return false;
            }
            //輸出二叉排序樹的數(shù)據(jù)地域值
            int printelem(int d)
            {
             cout<<setw(4)<<d;
             return 1;
            }

            void main()
            {
             BiTree sroot=NULL;
             BiTree Croot=NULL;
             int q,c,d,e,f,g,h,l,m,x;
             cout<<"..............................二叉排序樹的基本操作.............................."<<endl;
             cout<<"請您輸入十個正整數(shù)作為二叉排序樹的十個結(jié)點:"<<endl;
             cin>>q>>c>>d>>e>>f>>g>>h>>l>>m>>x;
             int i,j,k,a[10]={q,c,d,e,f,g,h,l,m,x};
             int n=7,b[]={10,7,6,9,20,12,22};
             BiSearchT my;
             for(i=0;i<10;i++)
              my.InsertBST(&sroot,a[i]);
             cout<<"二叉排序樹創(chuàng)建成功!"<<endl;
                cout<<"先序遍歷二叉排序樹:"<<endl;
             my.PreOrderTraverse(sroot,printelem);
             cout<<endl;
             cout<<"中序遍歷二叉排序樹:"<<endl;
             my.InOrderTraverse(sroot,printelem);
             cout<<endl;
                cout<<"請輸入你要查找的元素:";
             cin>>i;
             if(i==q||i==c||i==d||i==e||i==f||i==g||i==h||i==l||i==m||i==x)
              cout<<"查找成功!"<<endl;
             else cout<<"查找失敗!"<<endl;
             cout<<"請輸入你要刪除的元素(...輸入的元素必須在二叉排序樹中...):";
             cin>>j;
             my.DeleteBST(&sroot,j);
             cout<<"先序遍歷二叉排序樹:"<<endl;
             my.PreOrderTraverse(sroot,printelem);
             cout<<endl;
             cout<<"中序遍歷二叉排序樹:"<<endl;
                my.InOrderTraverse(sroot,printelem);
             cout<<endl;
                cout<<"在此基礎(chǔ)上請輸入你要插入的元素:";
             cin>>k;
             my.InsertBST(&sroot,k);
                cout<<"先序遍歷二叉排序樹:"<<endl;
             my.PreOrderTraverse(sroot,printelem);
             cout<<endl;
             cout<<"中序遍歷二叉排序樹:"<<endl;
                my.InOrderTraverse(sroot,printelem);
             cout<<endl;
            }

            posted on 2009-11-15 11:54 deercoder 閱讀(1583) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)和算法分析
            久久综合久久性久99毛片| 久久国产精品国语对白| 青青青青久久精品国产h久久精品五福影院1421| 久久99精品久久久久久久久久| 欧美午夜精品久久久久免费视| 91久久精品91久久性色| 夜夜亚洲天天久久| 久久天天躁狠狠躁夜夜avapp | 久久九九兔免费精品6| 国产A三级久久精品| 久久久受www免费人成| 亚洲狠狠婷婷综合久久蜜芽| 久久久国产一区二区三区| 久久久一本精品99久久精品88| 久久一本综合| 国产精品女同久久久久电影院| 久久高潮一级毛片免费| 精品免费久久久久久久| 日批日出水久久亚洲精品tv| 精品免费久久久久久久| 亚洲AV无一区二区三区久久| 深夜久久AAAAA级毛片免费看| 国产成人精品久久一区二区三区 | 久久精品国产亚洲精品2020| 久久精品国产99久久久香蕉| 久久中文字幕一区二区| 精品久久久久久久| av无码久久久久不卡免费网站| 亚洲精品无码久久久久AV麻豆| 人妻中文久久久久| 91亚洲国产成人久久精品网址| 丰满少妇人妻久久久久久| 亚洲AV无码一区东京热久久| 伊人久久大香线蕉av一区| 久久精品亚洲AV久久久无码| 亚洲一区精品伊人久久伊人 | 亚洲伊人久久大香线蕉综合图片| 欧美粉嫩小泬久久久久久久| 国产无套内射久久久国产| 热RE99久久精品国产66热| 久久夜色撩人精品国产|