亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言非遞歸后序遍歷二叉樹

2020-01-26 13:52:16
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言非遞歸后序遍歷二叉樹的具體代碼,供大家參考,具體內容如下

法一:實現思路:一個棧 先按 根->右子樹->左子樹的順序訪問二叉樹。訪問時不輸出。另一個棧存入前一個棧只進棧的結點。
最后輸出后一個棧的結點數據。

#include<stdio.h>#include<stdlib.h>typedef struct TreeNode{  char element;  struct TreeNode *left,*right;}Tree,*BTree;typedef struct StackNode{  BTree data;  struct StackNode *next;}Stack,*PStack;typedef struct{  PStack top; }LinkStack,*PLinkStack;//初始化空棧PLinkStack Init_Stack(void){  PLinkStack S;  S=(PLinkStack)malloc(sizeof(LinkStack));  if(S){    S->top=NULL;  }  return S;}//壓棧void Push_Stack(PLinkStack S,BTree T){  PStack p;  p=(PStack)malloc(sizeof(Stack));  p->data=T;  p->next=S->top;  S->top=p;}//判空int empty_Stack(PLinkStack S){  if(S->top){    return 0;  }else{    return 1;  }}//出棧PStack Pop_Stack(PLinkStack S){  PStack q;   if(empty_Stack(S)){    return S->top;  }else{    q=S->top;    S->top=S->top->next;  }  return q;  }//銷毀棧void DestroyStack(PLinkStack S){  PStack del;   while(S->top!=NULL){    del=S->top;    S->top=S->top->next;    free(del);  }  free(S);} BTree BuildTree(void){  char ch;  BTree node;  ch=getchar();  if(ch=='#'){    node=NULL;  }else{    node=(BTree)malloc(sizeof(Tree));    node->element=ch;    node->left=BuildTree();    node->right=BuildTree();  }  return node;}void NotRecursionPostOrder(BTree T){  PLinkStack S,CS;  S=Init_Stack();  CS=Init_Stack();  while(T || !empty_Stack(S)){    if(T){      Push_Stack(S,T);      Push_Stack(CS,T);      T=T->right;    }else{      T=Pop_Stack(S)->data;      T=T->left;    }  }  while(CS->top!=NULL){    printf("%c",CS->top->data->element);    CS->top=CS->top->next;  }  DestroyStack(CS);}int main(void){  BTree T;  T=BuildTree();  NotRecursionPostOrder(T);  return 0;} 

法二:實現思路。按先序遍歷訪問每一個結點。存入棧中,當為空時,就出立即棧(第一次出棧)。出棧后應該立即進棧,去訪問進棧結點的右結點,這樣可以保證先輸出左、右結點,再輸出根結點。二次進棧利用flag標記。

#include<stdio.h>#include<stdlib.h>typedef struct TreeNode {  char element;  int flag;  struct TreeNode *left, *right;}Tree, *BTree;typedef struct StackNode {  BTree data;  struct StackNode *next;}Stack, *PStack;typedef struct {  PStack top;}LinkStack, *PLinkStack;//初始化空棧PLinkStack Init_Stack(void) {  PLinkStack S = (PLinkStack)malloc(sizeof(LinkStack));  if (S) {    S->top = NULL;  }  return S;}//壓棧void Push_Stack(PLinkStack S, BTree T) {  PStack p;  p = (PStack)malloc(sizeof(Stack));  p->data = T;  p->next = S->top;  S->top = p;}//判空int empty_Stack(PLinkStack S) {  if (S->top) {    return 0;  }  else {    return 1;  }}//出棧PStack Pop_Stack(PLinkStack S) {  PStack q = S->top;  S->top = S->top->next;  return q;}BTree BuildTree(void) {  BTree t;  char ch;  ch = getchar();  if (ch == '#') {    t = NULL;  }  else {    t = (BTree)malloc(sizeof(Tree));    t->element = ch;    t->left = BuildTree();    t->right = BuildTree();  }  return t;}void DestroyStack(PLinkStack S){  PStack p;  while(S->top){    p=S->top;    free(p);    S->top=S->top->next;  }} void NotRecursionPostOrder(BTree T) {  PLinkStack S;  S = Init_Stack();  while (T || !empty_Stack(S)) {    if (T) {      T->flag = 0;      Push_Stack(S, T);      T = T->left;    }    else {      T = Pop_Stack(S)->data;      if (T->flag == 0) {        T->flag = 1;        Push_Stack(S, T);        T = T->right;      }      else {        if (T->flag == 1) {          printf("%c", T->element);          T = NULL;        }      }    }  }  DestroyStack(S);//銷毀棧 }int main(void) {  BTree T;  T = BuildTree();  NotRecursionPostOrder(T);  return 0;}


以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利精品视频在线| 国产精品91久久久久久| 国产日韩专区在线| 国产精品美女免费看| 91综合免费在线| 亚洲人成电影网站色xx| 91成品人片a无限观看| 91亚洲永久免费精品| 久久久久久久一区二区三区| 久久精品成人一区二区三区| 色播久久人人爽人人爽人人片视av| 91国产高清在线| 色婷婷成人综合| 午夜精品三级视频福利| 97成人精品区在线播放| 神马国产精品影院av| 欧美理论片在线观看| 国产精品扒开腿做爽爽爽视频| 大胆人体色综合| 欧美华人在线视频| 国产97在线观看| 91久久久久久久一区二区| 精品亚洲va在线va天堂资源站| 亚洲区中文字幕| 日韩精品免费观看| 亚洲国产精品久久久久久| 国产精品视频白浆免费视频| 美女视频黄免费的亚洲男人天堂| 国产精品1区2区在线观看| 欧美午夜影院在线视频| 成人国产精品免费视频| 91免费版网站入口| 精品久久久精品| 乱亲女秽乱长久久久| 亚洲国产欧美一区二区三区同亚洲| 欧美xxxx综合视频| 亚洲一区国产精品| 亚洲国产又黄又爽女人高潮的| 欧美精品电影免费在线观看| 久久综合久久美利坚合众国| 91亚洲国产精品| 91视频国产高清| 日本电影亚洲天堂| 亚洲色图13p| 亚洲精品v欧美精品v日韩精品| 久久精品影视伊人网| 欧美成人午夜激情在线| 国产一区二区黄| 亚洲国产私拍精品国模在线观看| 欧美日韩在线视频一区二区| 亚洲永久免费观看| 国产脚交av在线一区二区| 欧美性黄网官网| 欧美日韩在线影院| 国产视频观看一区| 久久高清视频免费| 国模叶桐国产精品一区| 国产91热爆ts人妖在线| 日韩av手机在线| 欧美视频第一页| 亚洲天堂av电影| 欧美激情视频三区| 国产精品国产三级国产aⅴ浪潮| 日韩精品免费在线播放| 国产精品盗摄久久久| 欧美巨乳美女视频| 日日狠狠久久偷偷四色综合免费| 亚洲国产精品系列| 国产精品偷伦一区二区| 成人欧美一区二区三区在线湿哒哒| 日韩欧美在线视频免费观看| 国产91精品久久久久久| 久久久www成人免费精品张筱雨| 亚洲欧美日本另类| 国产亚洲一区二区精品| 一本色道久久88精品综合| 欧美精品精品精品精品免费| 成人激情免费在线| 亚洲欧美在线播放| 欧洲美女免费图片一区| 国产一区视频在线| 亚洲免费视频观看| 日韩视频在线免费观看| 国产97在线观看| 97在线视频一区| 欧美日韩一区免费| 一区二区欧美激情| 亚洲电影免费观看高清完整版| www国产亚洲精品久久网站| 91精品在线国产| 亚洲欧美日韩视频一区| 国产一区二区久久精品| 亚洲天堂成人在线视频| 欧美另类第一页| 亚洲天堂男人的天堂| 欧洲s码亚洲m码精品一区| 国产亚洲精品成人av久久ww| 九九综合九九综合| 久久久伊人欧美| 国产精品com| 日韩电影免费在线观看中文字幕| 欧美成人sm免费视频| 国产成人精品一区| 亚洲国产成人久久| 亚洲国产日韩欧美在线99| 亚洲精品女av网站| 欧美精品在线视频观看| 国产欧美一区二区白浆黑人| 超碰97人人做人人爱少妇| 久久久久久高潮国产精品视| 日韩视频在线一区| 日韩成人av在线| 日韩av网址在线| 91在线中文字幕| 欧美高清视频在线| 亚洲美女在线观看| 国产91精品在线播放| 国产精品成av人在线视午夜片| 国产一区二区免费| 2023亚洲男人天堂| 亚洲精品欧美日韩专区| 91成人免费观看网站| 亚洲欧美综合v| 日韩精品有码在线观看| 日韩成人性视频| 91在线视频精品| 国产精品视频午夜| 中文字幕视频一区二区在线有码| 精品久久久久久久久久| 亚洲欧美精品在线| 亚洲乱码国产乱码精品精天堂| 狠狠色狠狠色综合日日五| 久久久国产一区| 一区二区三区天堂av| 国产精品极品尤物在线观看| 国产精品麻豆va在线播放| 久久国产天堂福利天堂| 国产一区二区日韩| 精品亚洲国产视频| 久久久久免费视频| 国产精品三级网站| 国产精品久久久久久久天堂| 在线观看不卡av| 欧美激情二区三区| 国产精品入口免费视| 国产激情999| 国产精品老牛影院在线观看| 在线观看免费高清视频97| 国产免费久久av| 欧美一区亚洲一区| 中文字幕精品www乱入免费视频| 亚洲国产成人91精品| 国产成人一区二区三区小说| 成人有码视频在线播放| 欧美精品18videosex性欧美| 国产精品入口夜色视频大尺度| 成人精品一区二区三区电影免费| 综合久久五月天| 黄网动漫久久久| 久久精品99久久香蕉国产色戒| 亚洲欧美国产另类| 亚洲香蕉av在线一区二区三区| 最近2019年手机中文字幕| 亚洲欧美国内爽妇网|