您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 二叉树的先序遍历、中序遍历、后序遍历的递归和非递归算法
.Word资料数据结构课程设计报告题目:二叉树的先序遍历、中序遍历、后序遍历的递归和非递归算法。学生姓名:***学号:***************专业班级:计算机科学与技术专业***班同组姓名:*****指导教师:*****老师设计时间:年下学期第周指导老师意见:.Word资料评定成绩:签名:日期:目录一、课题简介.........................................................3二、系统项目设计...............3三、系统实现.........................................................31.二叉树的建立...................................................42.先序遍历..........................................................4a.递归算法.......................................................7b.非递归算法...................................................73.中序遍历..........................................................6a.递归算法.......................................................7b.非递归算法...................................................74.后序遍历..........................................................6a.递归算法.......................................................7b.非递归算法...................................................75.主菜单程序......................................................45.子菜单程序......................................................4四、系统测试.......................................................18.Word资料1.二叉树的建立...................................................42.先序遍历..........................................................4a.递归算法.......................................................7b.非递归算法...................................................72.中序遍历..........................................................6a.递归算法.......................................................7b.非递归算法...................................................73.后序遍历..........................................................6a.递归算法.......................................................7b.非递归算法..................................................74.主菜单程序......................................................45.子菜单程序......................................................4五、小结..............................................................22六、参考文献................................23一.课题简介:.Word资料通过这个课题设计主要掌握三种遍历方法,包括前序遍历,中序遍历和后序遍历,以及后续遍历的非递归算法。二.项目设计:图1:系统功能模块图非递归算法先序遍历中序遍历后序遍历退出程序退出程序后序遍历中序遍历先序遍历递归算法系统主界面.Word资料图2:系统存盘功能流程图准备系统登录选择遍历中序遍历后序遍历先序遍历退出输出遍历结果.Word资料三系统实现系统核心代码:1.二叉树的建立:二叉树的遍历算法需要先建立二叉树,二叉树的建立需要建立栈和数组栈和数组的建立:typedefstructnode/*结点定义*/{chardata;structnode*lchild,*rchild;}BinTreeNode;typedefstruct{//栈的定义BinTreeNode*ptr;inttag;}StackNode;二叉树的建立:BinTreeNode*CreateBinTree(BinTreeNode*Tree)/*,按先序序列建立二叉树,输入并建立一棵二叉树Tree*/{charc;scanf(%c,&c);if(c=='&')Tree=NULL;else{Tree=(BinTreeNode*)malloc(sizeof(BinTreeNode));Tree-data=c;Tree-lchild=CreateBinTree(Tree-lchild);Tree-rchild=CreateBinTree(Tree-rchild);}return(Tree);}.Word资料2.先序遍历:a.递归算法:先序遍历的递归算法:/*二叉树的先序遍历*/voidPreOrder(BinTreeNode*T){if(T!=NULL){printf(%c,T-data);PreOrder(T-lchild);PreOrder(T-rchild);}}.Word资料b.非递归算法:先序遍历的非递归算法:/*二叉树的先序遍历的非递归算法*/voidPreOrderTwo(BinTreeNode*T){BinTreeNode*p,*S[Max];inttop=-1;p=T;/*初始化*/do{while(p!=NULL){printf(%c,p-data);top++;S[top]=p;p=p-lchild;}if(top-1)/*栈非空*/{p=S[top];top--;/*取栈顶元素,出栈*/p=p-rchild;}}while((p!=NULL)||(top-1));}.Word资料2.中序遍历:检查该用户是否可以使用该系统,如果没有该用户则重新输入输入,若用户密码输入错误,三次错误时,退出登录系统,并且该用户被冻结。voidcommon_user()//普通用户登录{charch;charpass[20];charuname[20];inti=0;Lab:if(i==3)exit(1);puts(\n请输入用户名:);cinuname;for(user*p=head;p!=NULL;p=p-next){if(!strcmp(uname,p-getmingzi())){if(p-getstate()=3){cout该账户已经被冻结!\n;i++;gotoLab;}elsebreak;}}if(!p){.Word资料cout该用户不存在,请重新输入!\n;i++;gotoLab;}intx=0;cout请输入密码:\n;while((ch=getch())!=-1&&ch!='\r'){pass[x++]=ch;putchar('*');}pass[x]='\0';if(!strcmp(p-getmima1(),pass))while(1){system(cls);inta;coutendlendlendl;cout===============★欢迎使用本银行★==============endl;cout*****存钱1*****endl;cout*****取钱2*****endl;cout*****转帐3*****endl;cout*****查询4*****endl;cout*****挂失5*****endl;cout*****修改密码6*****endl;cout*****保存信息7*****endl;cout*****返回上级0*****endl;cout***********************************************endl;cout请输入您的选择:endl;cina;.Word资料switch(a){case1:cunqian();system(cls);break;case2:quqian();system(cls);break;case3:zhuanzhang();system(cls);break;case4:{chaxun();//cout请输入帐号:endl;//查询system(cls);break;}case5:guashi();system(cls);return;case6:xiugai();system(cls);break;case7:{cunyonghu();cunzhanghu();cunguanli();exit(1);}case0:return;}}else{cout密码错误!\n;p-setstate(p-getstate()+1);//如果密码错误,在以前基础上加状态一并存盘cunyonghu();i++;gotoLab;.Word资料}}voiddisplay()//打印函数{p=head;while(p!=NULL){cout用户名:p-getmingzi()endl普通密码:p-getmima1()endl状态:p-getstate()endl;p=p-next;}}1)没有此用户:.Word资料2)用户密码错误:3)密码正确:3.后序遍历:检查该用户是否可以使用本系统,三次密码错误则退出登录系统。voidmanage()//管理员{.Word资料charch;charpass[20];charuname[20];inti=0;Lab:if(i==3)exit(1);puts(\n请输入用户名:);cinuname;for(user*p=head;p!=NULL;p=p-next){if(!strcmp(uname,p-getmingzi())){if(p-getstate()0){cout该账户已经被冻结!\n;i++;gotoLab;}elsebreak;}}if(!p){cout该用户不存在,请重新输入!\n;i++;gotoLab;}intx=0;cout请输入密码:\n;while((ch=getch())!=-1&&ch!='\r').Word资料{pass[x++]=ch;putchar('*');}pass[x]='\0';if(!strcmp(133,pass))while(1){system(cls);intx;cou
本文标题:二叉树的先序遍历、中序遍历、后序遍历的递归和非递归算法
链接地址:https://www.777doc.com/doc-5697635 .html