电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数据结构试验VIP免费

数据结构试验_第1页
1/5
数据结构试验_第2页
2/5
数据结构试验_第3页
3/5
实验六二叉树遍历算法的设计与实现实验人 :杨嘉雯学号 : Xb10680230 时间: 2012.11.27一、实验目的1.掌握二叉树的建立与存储2.掌握二叉树的遍历方法二、实验内容1.编写程序实现根据用户输入二叉树的先序序列建立一棵二叉树,并实现对此二叉树的先序、中序、和后序遍历。用非递归方法实现中序遍历。(选做)三、实验步骤:1.接收用户输入的先序序列建立以二叉链表为存储结构的二叉树。2. 对建立好的二叉树实现先序、中序、和后序遍历,将遍历后的序列输出。四、算法说明对于三种遍历的过程, 要是用递归写的就根据书上所给出的遍历步骤做稍微的调整就好了。 至于非递归的三种遍历, 中序最为简单, 用一个栈就可以完成了,思路是边进栈边收索左孩子, 直到左孩子为空的时候才开始进行出栈输出再收索右孩子的操作。采用非递归中序遍历算法, 先逐步扫描二叉树的左子树,并压入堆栈, 如果栈不为空,左子树为空,则弹出栈顶的一个元素并输出。然后再扫描右子树,然后再重复上面的步骤扫描该分支的左子树,直至整棵二叉树都扫描完成。 此时输出的序列便是该二叉树的中序遍历序列。五、测试结果中序线索化二叉树:六、分析与探讨实验中经常会出现前后字符不一致的情况,主要原因是自己比较马虎,平时编程比较少,遇到比较长的程序,就容易出错。七、附录:源代码#include #include typedef struct BiTNode /* 定义二叉链表结点结构*/ { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void CreateBiTree(BiTree *T)/* 输入二叉树的先序遍历序列,创建二叉链表*/ { char ch; ch=getchar(); if (ch=='#') *T=NULL; else { *T=(BiTNode*)malloc(sizeof(BiTNode)); (*T)->data=ch; //printf(" 当前根结点 :%c\n",(*T)->data); CreateBiTree(&(*T)->lchild); /* 建左子树*/ CreateBiTree(&(*T)->rchild); /* 建右子树*/ } } void PreOrderTraverse(BiTree T)/* 对二叉树进行先序遍历*/ { if(T==NULL) return; printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BiTree T)/* 对二叉树进行中序遍历*/ { if(T==NULL) return; InOrderTraverse(T->lchild); //中序遍历左子树printf("%c",T->data); //显示结点数据,可以更改为其它对结点操作InOrderTraverse(T->rchild); //最后中...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

数据结构试验

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部