亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? creat tree.cpp

?? 設二叉樹結點值為大寫字母
?? CPP
字號:
#include<iostream> 
#define STACK_INIT_SIZE 100//棧或隊列的大小常量 
#define STACKINCREMENT 50  //用于擴增棧的大小 
using namespace std;
char preorder[100];   //存放二叉樹的前序序列 
char inorder[100];    //存放二叉樹的中序序列 
typedef struct BitNode{  //定義二叉鏈表的結構 
   char value;
   struct BitNode *lchild, *rchild;        
}BitNode ,* BitNodeptr;
typedef struct{   //定義一個存放二叉樹結點的棧 
     BitNode *top;
     BitNode *base;
     int stacksize;      
}Stack;
typedef struct{    // 定義一個存放二叉樹結點的隊列
     BitNode *front;
     BitNode *tail; 
     int Queuesize;       
}Queue;
void InitStack(Stack &S)//初始化棧 
{
   S.base=(BitNode*)malloc(STACK_INIT_SIZE*sizeof(BitNode));
   S.top=S.base;
   S.stacksize=STACK_INIT_SIZE;    
}
void InitQueue(Queue &S)  //初始化隊列 
{
   S.front=(BitNode*)malloc(STACK_INIT_SIZE*sizeof(BitNode));  
   S.tail=S.front;
   S.Queuesize=STACK_INIT_SIZE; 
}
void Pop(Stack &S,BitNodeptr &p) //取出棧頂元素,并把它賦給P 
{
   if(S.top>S.base){
      S.top--;
      p=(BitNode*)malloc(sizeof(BitNode));
      p->value=S.top->value;
      p->lchild=S.top->lchild;
      p->rchild=S.top->rchild;                  
   }     
}
void Dequeue(Queue &S,BitNodeptr &p)  //取出隊列的隊頭元素,并把它賦給P 
{
   if(S.front!=S.tail){
     p=(BitNode*)malloc(sizeof(BitNode));
     p->value=S.front->value;  
     p->lchild=S.front->lchild;
     p->rchild=S.front->rchild; 
     S.front++;
     } 
}
int QueueEmpty(Queue &S)             //判斷一個隊列是否為空 
{
   if(S.front==S.tail)
     return 1;
   else return 0;       
}
void Enqueue(Queue &S,BitNodeptr p)   //元素P進隊列 
{
   if((S.front-S.tail)%STACK_INIT_SIZE!=1){
      S.tail->value=p->value;
      S.tail->lchild=p->lchild;
      S.tail->rchild=p->rchild;
      S.tail++;                                          
   }       
}
void GetTop(Stack &S,BitNodeptr &p)   // 察看當前的棧頂元素 
{
   if(!p)p=(BitNode*)malloc(sizeof(BitNode));
   p->value=(S.top-1)->value;
   p->lchild=(S.top-1)->lchild;
   p->rchild=(S.top-1)->rchild;     
}
void Push(Stack &S,BitNodeptr p)//把元素P壓入棧中 
{
   if(S.top-S.base>=S.stacksize){
      S.base=(BitNode*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(BitNode));    
      S.top=S.base+S.stacksize;    
      S.stacksize+= STACKINCREMENT;
   }
   S.top->value=p->value;
   S.top->lchild=p->lchild;
   S.top->rchild=p->rchild;
  
   S.top++;
}
int StackEmpty(Stack &S)  //判斷當前的棧是否為空 
{
   if(S.top==S.base)
     return 1;
   else return 0;     
}
void creatTree(BitNodeptr &current,int i, int start,int end)//根據前序序列和中敘序列構造一根二叉樹 
{
   if(start>end)
      current=NULL;             
   else{
      int k;  
      for(k=start;inorder[k]!=preorder[i];k++);
      current=(BitNode*)malloc(sizeof(BitNode));
      current->value=preorder[i];
      creatTree(current->lchild,i+1,start,k-1);
      creatTree(current->rchild,i+k-start+1,k+1,end);     
   }
}

void visit(BitNodeptr p)
{
   cout<<p->value;     //訪問結點P的值 
}

void findvertice(int &control,int n,int &m,char path[],BitNodeptr T,char A)//查找一條到所求結點的路徑,如果不存在該路徑,則 control為0 
{                                                                          //找到該路徑了就返回該路徑,并control為1 
     if(control==1)
        path[m]='\0';
     else if(T){
             path[n]=T->value;
             if(path[n]==A){control=1;m=n+1;}
             findvertice(control,n+1,m,path,T->lchild,A);
             findvertice(control,n+1,m,path,T->rchild,A);
          }       
}
void postorderTraverse(BitNodeptr T)  //后序遍歷二叉樹 
{   
    Stack S;
    InitStack(S);
    Push(S,T);
    T=T->lchild;
    BitNodeptr p;
    int flag;
    while(!StackEmpty(S)){
       while(T){Push(S,T);T=T->lchild;} 
       p=NULL;
       flag=1;
       while(!StackEmpty(S)&&flag){
          GetTop(S,T);                         
          if(!T->rchild||!p){
             if(T->rchild==p){
                visit(T);
                p=T;   
                Pop(S,T);              
             }  
             else{
                T=T->rchild;
                flag=0;     
             }      
          }
          else{
             if(T->rchild->value==p->value){
                 visit(T);
                 p=T;   
                 Pop(S,T);           
             }  
             else{
                T=T->rchild;
                flag=0;     
             }     
          }                                 
       }
                              
    }      
}
void levelTraverse(BitNodeptr T){//按層次遍歷二叉樹 
   
   BitNodeptr p;
   Queue S;
   InitQueue(S);
   if(T)Enqueue(S,T);
   
   while(!QueueEmpty(S)){
      Dequeue(S,p);
      visit(p);
      if(p->lchild) Enqueue(S,p->lchild);   
      if(p->rchild) Enqueue(S,p->rchild);                  
   }    
}

int main()
{
   cout<<"please input the preorder:"<<endl;//輸入前序序列 
   cin>>preorder;
   cout<<"please input the inorder:"<<endl;//輸入后序序列 
   cin>>inorder;
   
   int end;          //統計有多少個結點 
   for(end=0;preorder[end]!='\0';end++);
   
   BitNodeptr root;    //調用函數來建立一顆二叉樹 
   creatTree(root,0,0,end-1);
   
   cout<<"the postordertraverse is:"; //輸出所建二叉樹的后序遍歷序列 
   postorderTraverse(root);
   cout<<endl;
   
   cout<<"the leveltraverse is:";     //輸出所建二叉樹的按層次遍歷序列 
   levelTraverse(root);
   cout<<endl;
   
   cout<<"please input vertice you want to find:"<<endl;//輸入要尋找的結點 
   char A;
   char path[100];       //如果該結點存在樹中,就用path數組來記錄該路徑 
   int n=0,control=0,m=0;
   cin>>A;
   findvertice(control,n,m,path,root,A); //調用函數來判斷所求結點是否在樹中,并記錄下路徑 
   if(control==0)             //如果不存在該結點 
     cout<<"there is not the vertice"<<endl;
   else{                       //如果存在該結點 
     cout<<"the path in the tree is:"<<path[0];
     for(int i=1;path[i]!='\0';i++)
       cout<<"-->"<<path[i];  
   }
   system("pause");
   return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页国产欧美久久| 国产精品蜜臀av| 色狠狠一区二区三区香蕉| 国产麻豆成人传媒免费观看| 日韩精品电影一区亚洲| 午夜精品久久久久久久久久| 夜夜嗨av一区二区三区四季av| 中文av一区二区| 国产精品每日更新| 亚洲图片激情小说| 亚洲一区二区三区四区五区中文| 亚洲激情av在线| 一区二区三区在线免费观看| 亚洲欧美另类久久久精品| 亚洲欧洲日本在线| 亚洲一区自拍偷拍| 青椒成人免费视频| 国产麻豆成人传媒免费观看| 成人激情黄色小说| 欧美日韩不卡一区| 日韩一区二区精品在线观看| 精品国产成人系列| 中文字幕在线不卡一区| 亚洲一区二区在线观看视频| 麻豆精品在线视频| 国内精品久久久久影院薰衣草| 国产精品伊人色| 91麻豆精品91久久久久久清纯| 91精品国产一区二区| 国产三级欧美三级日产三级99| 国产精品美日韩| 日韩精品五月天| 岛国一区二区三区| 欧美精品日韩精品| 欧美激情中文字幕一区二区| 亚洲最大成人综合| 国产在线国偷精品产拍免费yy| 成人国产亚洲欧美成人综合网| 欧美视频在线观看一区| 精品久久久久香蕉网| 亚洲精品一二三| 麻豆国产欧美一区二区三区| 色综合久久中文字幕综合网| 精品久久国产字幕高潮| 亚洲制服丝袜av| 粉嫩绯色av一区二区在线观看| 欧美日韩一区不卡| 久久久久久97三级| 午夜精品久久久久久不卡8050| 国产a区久久久| 欧美一级日韩免费不卡| 亚洲男帅同性gay1069| 久久99国产乱子伦精品免费| 精品视频全国免费看| 中文字幕一区视频| 国产乱码字幕精品高清av| 欧美一卡二卡三卡| 香蕉久久一区二区不卡无毒影院| 成人性生交大合| 精品99久久久久久| 日日夜夜一区二区| 欧美图区在线视频| 综合久久一区二区三区| 成人黄色av电影| 国产欧美一区二区在线| 九一九一国产精品| 欧美激情在线观看视频免费| 蜜桃av一区二区| 7777精品伊人久久久大香线蕉的| 亚洲美女视频在线| 97久久精品人人做人人爽| 国产日本亚洲高清| 国产成人综合在线播放| 国产日本欧洲亚洲| 成人综合激情网| 国产精品免费看片| 成人精品国产一区二区4080| 国产精品久久久久天堂| 成人av集中营| 国产精品黄色在线观看| av激情亚洲男人天堂| 国产精品成人网| 色狠狠色噜噜噜综合网| 亚洲成人av在线电影| 538在线一区二区精品国产| 免费看欧美美女黄的网站| 91精品国产欧美一区二区| 久色婷婷小香蕉久久| 久久综合久久综合久久综合| 国产传媒一区在线| 亚洲欧美视频在线观看视频| 欧美性猛片xxxx免费看久爱| 免费亚洲电影在线| 久久一日本道色综合| 99re这里只有精品视频首页| 亚洲精品国产第一综合99久久| 欧美日韩视频第一区| 毛片av一区二区| 国产精品久久久久影院亚瑟| 欧美一a一片一级一片| 日本欧洲一区二区| 26uuu欧美日本| 色综合色狠狠天天综合色| 亚洲国产精品尤物yw在线观看| 91精品国产综合久久久久久久| 韩国成人福利片在线播放| 国产精品私房写真福利视频| 欧美视频中文一区二区三区在线观看 | 亚洲美女免费视频| 欧美日韩中文另类| 国产成人av在线影院| 一区二区三区四区精品在线视频| 91精品国产综合久久精品| 国产精品一区二区三区网站| 一区二区三区产品免费精品久久75| 制服丝袜av成人在线看| 日本高清成人免费播放| 日韩精品一级二级| 国产精品每日更新在线播放网址| 欧美肥妇bbw| av在线这里只有精品| 日本女人一区二区三区| 国产精品美女久久久久aⅴ| 在线不卡中文字幕| 99免费精品在线| 麻豆精品视频在线观看| 一区二区在线观看免费视频播放| wwwwxxxxx欧美| 欧美福利视频一区| 色婷婷久久久亚洲一区二区三区| 国产盗摄视频一区二区三区| 乱一区二区av| 午夜久久久久久| 一级日本不卡的影视| 国产精品毛片大码女人 | 亚洲国产综合色| 欧美国产日韩亚洲一区| 日韩免费一区二区| 欧美日韩不卡在线| 欧美这里有精品| 色哟哟在线观看一区二区三区| 国产成人av一区二区三区在线观看| 日韩二区在线观看| 亚洲mv在线观看| 亚洲一区二三区| 亚洲欧美国产77777| 中文字幕中文字幕一区二区| 国产亚洲精品aa午夜观看| 精品91自产拍在线观看一区| 91精品国产综合久久精品性色 | 欧美色欧美亚洲另类二区| 成av人片一区二区| 福利一区二区在线观看| 国产成人在线视频免费播放| 国模无码大尺度一区二区三区| 久久99精品久久只有精品| 99久久综合狠狠综合久久| 粉嫩av亚洲一区二区图片| 成人v精品蜜桃久久一区| 成人午夜av电影| av一区二区三区| 色激情天天射综合网| 欧美综合在线视频| 欧美美女一区二区| 日韩免费视频一区二区| 亚洲精品在线观看网站| 国产亚洲一二三区| 欧美高清在线一区二区| 亚洲乱码一区二区三区在线观看| 亚洲精品国产无套在线观| 视频一区免费在线观看| 美女一区二区视频| 国产成人综合在线观看| 91麻豆精品在线观看| 欧美视频中文一区二区三区在线观看| 欧美理论片在线| 久久色中文字幕| 亚洲色图在线视频| 免费高清在线一区| caoporn国产精品| 欧美色图在线观看| 欧美精品一区二区三区蜜桃视频 | 风间由美一区二区三区在线观看 | 久久99精品国产| 成人免费毛片aaaaa**| 日本乱码高清不卡字幕| 日韩欧美一区中文| 国产精品毛片无遮挡高清| 亚洲成人先锋电影| 国产a久久麻豆| 欧美精品成人一区二区三区四区| 久久久国际精品| 亚洲午夜电影网| 成人性色生活片| 欧美一区二区三区视频在线观看| 国产精品福利av| 久久99国产精品尤物| 日本丶国产丶欧美色综合| 久久中文字幕电影| 亚洲成人免费视频|