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

首頁 > 編程 > C++ > 正文

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

2020-05-23 13:46:53
字體:
來源:轉載
供稿:網友

本文實例為大家分享了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;} 

C語言,非遞歸,二叉樹

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

C語言,非遞歸,二叉樹

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久噜噜噜久久| 欧美乱大交xxxxx另类电影| 亚洲电影免费观看| 日韩一二三在线视频播| 国产视频久久久| 精品国产视频在线| 2020久久国产精品| 伊人成人开心激情综合网| 国产精品久久久久久久午夜| 日韩av在线网页| 欧美疯狂xxxx大交乱88av| 国产精品99蜜臀久久不卡二区| 中文字幕成人在线| 福利一区视频在线观看| 欧美极品美女视频网站在线观看免费| 亚洲qvod图片区电影| 久久久久久国产精品| 久久影视电视剧免费网站清宫辞电视| 国产精品国产福利国产秒拍| 国产999在线观看| 中文字幕在线国产精品| 国产精品高潮呻吟视频| 亚洲精品成人网| 欧美老女人在线视频| 国内外成人免费激情在线视频| 国产精品爽爽爽爽爽爽在线观看| 992tv在线成人免费观看| 国产日韩综合一区二区性色av| 亚洲精品国产福利| 国产成人精品电影| 国产精品99久久久久久久久久久久| 国产婷婷97碰碰久久人人蜜臀| 一区二区三区视频在线| 国产91成人video| 国产精品久久久久久久av大片| 日韩欧美在线中文字幕| 成人在线免费观看视视频| 在线国产精品播放| 久久香蕉频线观| 欧美—级a级欧美特级ar全黄| 日韩免费在线观看视频| 亚洲跨种族黑人xxx| 国产精品美女在线观看| 亚洲精品视频在线播放| 中文字幕视频一区二区在线有码| 成人国产精品一区| 欧美电影在线观看网站| 国产精品伦子伦免费视频| 亚洲3p在线观看| 国产精品久久久久久久久久久久久久| 夜夜嗨av一区二区三区免费区| 日韩的一区二区| 国产精品美女呻吟| 久久手机精品视频| 亚洲无亚洲人成网站77777| 欧美精品激情在线| 中文字幕av日韩| 中文字幕一区电影| 亚洲第一区中文99精品| 久久久久久亚洲精品| 亚洲电影成人av99爱色| 久久影院免费观看| 久久久久久久影视| 国产日韩精品电影| 日韩av成人在线| 91精品国产777在线观看| 成人黄色免费网站在线观看| 欧美极品在线播放| 日韩美女主播视频| 狠狠色狠狠色综合日日五| 亚洲综合小说区| 久久久免费精品| 美女性感视频久久久| 91精品免费视频| 日韩中文视频免费在线观看| 国产精品欧美一区二区三区奶水| 亚洲国产91精品在线观看| 国产99久久精品一区二区| 日韩高清中文字幕| 18一19gay欧美视频网站| 日韩高清电影免费观看完整版| 日韩精品视频中文在线观看| 欧美性猛交xxxx乱大交| 日韩网站免费观看高清| 欧美激情xxxx性bbbb| 不卡毛片在线看| 国产成人福利网站| 精品一区二区三区四区在线| 91九色国产社区在线观看| 欧美日韩综合视频网址| 亚洲国产成人精品久久| 亚洲老头老太hd| 亚洲一区美女视频在线观看免费| 国产精品免费一区豆花| 国产不卡精品视男人的天堂| 欧美日韩一区二区三区在线免费观看| 亚洲免费av网址| 亚洲免费一级电影| 日韩精品在线免费观看视频| 精品成人国产在线观看男人呻吟| 亚洲国产高潮在线观看| 国产精品亚洲自拍| 北条麻妃在线一区二区| 欧美精品福利在线| 奇米4444一区二区三区| 在线精品国产欧美| 96sao精品视频在线观看| 97成人精品视频在线观看| 亚洲人成在线观看| 亚洲另类激情图| 日韩精品在线免费观看视频| 97超视频免费观看| 日韩av色综合| 日韩影视在线观看| 亚洲电影天堂av| 欧美激情一区二区三级高清视频| 久久亚洲国产成人| 国产+成+人+亚洲欧洲| 最近2019年好看中文字幕视频| 日韩欧美精品网站| 久久视频在线播放| 欧美视频专区一二在线观看| 国产精品男人爽免费视频1| 欧美最猛性xxxx| 91久久久久久久久| 欧美综合在线第二页| 久久久久中文字幕| 中文字幕精品—区二区| 亚洲免费福利视频| 欧美日韩在线视频一区二区| 久久国产精品久久久久久| 亚洲最新av网址| 2019中文字幕全在线观看| 欧美极品少妇与黑人| 国内精品久久久久伊人av| 欧美日韩精品在线| 久久免费少妇高潮久久精品99| 亚洲欧洲偷拍精品| 国产一区二区av| 久久在线免费观看视频| 国产精品日韩在线观看| 色777狠狠综合秋免鲁丝| 国内外成人免费激情在线视频网站| 欧美专区中文字幕| 亚洲自拍在线观看| 26uuu久久噜噜噜噜| 亚洲色图25p| 中文字幕亚洲图片| 亚洲图片欧美日产| 久久久免费观看视频| 亚洲精品黄网在线观看| 亚洲精品永久免费| 在线日韩精品视频| 亚洲国产欧美一区二区三区同亚洲| 午夜免费日韩视频| 欧美午夜精品在线| 亚洲人在线视频| 久久的精品视频| 国产成人97精品免费看片| 欧美色图在线视频| 午夜精品福利视频| 操91在线视频| 国产亚洲欧美另类中文| 国产91精品久久久|