资源描述:
《二叉树结构特性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、二叉树的结构特性实验目的1.掌握指针变量、动态变量的含义。2.掌握二叉树的结构特性以及各种存储结构的特点和适用范围。实验内容与步骤2.编写一个程序实现二叉树的各种遍历算法。程序为:#include#include#includetypedefstructtree{chardata;structtree*lc,*rc;}Tree;charpre[30]="EBADCFHGIKJ",in[30]="ABCDEFGHIJK";voidFound_Tree(Tree*&
2、bt,intpb,intpe,intib,intie){inti,j;Tree*s;if(pe>=pb&&ie>=ib){s=(Tree*)malloc(sizeof(Tree));s->data=pre[pb];bt=s;i=ib;j=pb;while(in[i]!=pre[pb]){i++;j++;}Found_Tree(s->lc,pb+1,j,ib,i-1);Found_Tree(s->rc,j+1,pe,i+1,ie);}else{bt=NULL;}}voidLoop_Traverse_Tree(Tree*b
3、t){if(bt){printf("%c",bt->data);Loop_Traverse_Tree(bt->lc);Loop_Traverse_Tree(bt->rc);}}实验内容与步骤实voidPre_Traverse_Tree_sta(Tree*root){Tree*sta[50];inti=1;if(root){sta[i]=root;i++;while(i>1){while(sta[i-1]){root=sta[i-1];printf("%c",root->data);sta[i]=root->lc;i++
4、;}i--;if(i>1){i--;sta[i]=sta[i]->rc;i++;}}}}voidIn_Traverse_Tree_sta(Tree*root){inti;Tree*sta[50];i=1;if(root){sta[i]=root;i++;while(i>1){while(sta[i-1]){root=sta[i-1];sta[i]=root->lc;i++;}i--;if(i>1){printf("%c",sta[i-1]->data);i--;sta[i]=sta[i]->rc;i++;}验内容与步骤
5、}}}voidLast_Traverse_Tree_sta(Tree*root){Tree*sta[50];inti=1;if(root){sta[i]=root;i++;while(i>1){while(sta[i-1]){sta[i]=sta[i-1]->lc;i++;}i--;if(i>1){sta[i]=sta[i-1]->rc;i++;if(sta[i-1]==NULL){i=i-2;printf("%c",sta[i]->data);while(i>1&&sta[i-1]&&sta[i]==sta[i-1]
6、->rc){printf("%c",sta[i-1]->data);i--;}if(i>1){sta[i]=sta[i-1]->rc;i++;}}}}}}voidmain(){intlen;Tree*root;len=strlen(pre);Found_Tree(root,0,len-1,0,len-1);Loop_Traverse_Tree(root);printf("下面是前序遍历Pre:");Pre_Traverse_Tree_sta(root);printf("下面是中序遍历In:");
7、In_Traverse_Tree_sta(root);printf("下面是后序遍历:End");Last_Traverse_Tree_sta(root);printf("");}