欢迎来到天天文库
浏览记录
ID:8968102
大小:44.50 KB
页数:5页
时间:2018-04-13
《c语言实现二叉树的前序、中序、后续遍历(非递归法)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、二叉树的前序遍历、中序遍历、后续遍历(非递归法)1、前序遍历(非递归):#include#includestructBiTNode*stack[100];structBiTNode//定义结构体{chardata;structBiTNode*lchild,*rchild;};voidlater(structBiTNode*&p)//前序创建树{charch;scanf("%c",&ch);if(ch=='')p=NULL;else{p=(structBiTNode*)malloc(sizeof(structBiTNode));p
2、->data=ch;later(p->lchild);later(p->rchild);}}voidprint(structBiTNode*p)//前序遍历(输出二叉树){inti=-1;while(1){while(p!=NULL){stack[++i]=p->rchild;/*printf("ok?");*/printf("%c",p->data);p=p->lchild;}if(i!=-1){p=stack[i];i--;}elsereturn;}}voidmain()//主函数{structBiTNode*p,*t;later(p);print(p);}
3、2、中序遍历(非递归)#include#includestructBiTNode*stack[100];structBiTNode//定义结构体{chardata;structBiTNode*lchild,*rchild;};voidlater(structBiTNode*&p)//前序创建树{charch;scanf("%c",&ch);if(ch=='')p=NULL;else{p=(structBiTNode*)malloc(sizeof(structBiTNode));p->data=ch;later(p->lchild
4、);later(p->rchild);}}voidprint(structBiTNode*p)//中序遍历(输出二叉树){inti=-1;while(1){while(p!=NULL){i++;stack[i]=p;p=p->lchild;}if(i!=-1){p=stack[i];i--;printf("%c",p->data);p=p->rchild;}}}voidmain()//主函数{structBiTNode*p;later(p);print(p);}3、后续遍历(非递归):#include#includestruct
5、BiTNode*stack[100];structBiTNode//定义结构体{chardata;structBiTNode*lchild,*rchild;};voidlater(structBiTNode*&p)//前序创建树{charch;scanf("%c",&ch);if(ch=='')p=NULL;else{p=(structBiTNode*)malloc(sizeof(structBiTNode));p->data=ch;later(p->lchild);later(p->rchild);}}voidprint(structBiTNode*p)//后序遍
6、历(输出二叉树){inti=-1;while(1){while(p!=NULL){stack[++i]=p;/*printf.0("ok?");*/p=p->lchild;}if(i!=-1){while(p==stack[i]->rchild
7、
8、(p==stack[i]->lchild&&stack[i]->rchild==NULL)){p=stack[i--];printf("%c",p->data);if(i==-1)return;}p=stack[i]->rchild;}elsereturn;}}intmain()//主函数{structBiTNode*
9、p,*t;later(p);print(p);printf("");system("pause");return0;}供测试使用的数据前序创建二叉树中序后序/*ABDC*/BDACDBCA/*ABCDEFG*/CBDAFEGCDBFGEA
此文档下载收益归作者所有