第一范文网 - 专业文章范例文档资料分享平台

数据结构实验报告- 答案汇总

来源:用户分享 时间:2025/5/25 20:04:58 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

//========NLR 先序遍历============= void Preorder(BinTree T) {

if(T) { printf(\ //访问结点 Preorder(T->lchild); //先序遍历左子树 Preorder(T->rchild); //先序遍历右子树 } }

//========LNR 中序遍历=============== void Inorder(BinTree T) {

if(T) { Inorder(T->lchild); //中序遍历左子树 printf(\ //访问结点 Inorder(T->rchild); //中序遍历右子树 } }

//==========LRN 后序遍历============ void Postorder(BinTree T) {

if(T) { Postorder(T->lchild); //后序遍历左子树 Postorder(T->rchild); //后序遍历右子树 printf(\ //访问结点 } }

//=====采用后序遍历求二叉树的深度、结点数及叶子数的递归算法======== int TreeDepth(BinTree T) {

int hl,hr,max; if(T){ hl=TreeDepth(T->lchild); //求左深度 hr=TreeDepth(T->rchild); //求右深度 max=hl>hr? hl:hr; //取左右深度的最大值 NodeNum=NodeNum+1; //求结点数 if(hl==0&&hr==0) leaf=leaf+1; //若左右深度为0,即为叶子。 return(max+1); }

else return(0); }

//====利用\先进先出\(FIFO)队列,按层次遍历二叉树========== void Levelorder(BinTree T) {

int front=0,rear=1;

BinTNode *cq[Max],*p; //定义结点的指针数组cq cq[1]=T; //根入队 while(front!=rear) { front=(front+1)%NodeNum; p=cq[front]; //出队 printf(\ //出队,输出结点的值 if(p->lchild!=NULL){ rear=(rear+1)%NodeNum; cq[rear]=p->lchild; //左子树入队 } if(p->rchild!=NULL){ rear=(rear+1)%NodeNum; cq[rear]=p->rchild; //右子树入队 } } }

//====数叶子节点个数========== int countleaf(BinTree T) { int hl,hr; if(T){ hl=countleaf(T->lchild); hr=countleaf(T->rchild); if(hl==0&&hr==0) //若左右深度为0,即为叶子。 return(1); else return hl+hr; } else return 0; }

//==========主函数================= void main() {

BinTree root; char i; int depth; printf(\

printf(\; Input preorder:\输入完全二叉树的先序序列, // 用#代表虚结点,如ABD###CE##F## root=CreatBinTree(); //创建二叉树,返回根结点

do { //从菜单中选择遍历方式,输入序号。

printf(\ printf(\ printf(\ printf(\ printf(\ printf(\按层次遍历之前,先选择4,求出该树的结点数。 printf(\ printf(\ fflush(stdin); scanf(\ //输入菜单序号(0-5) switch (i-'0'){ case 1: printf(\ Preorder(root); //先序遍历 break; case 2: printf(\ Inorder(root); //中序遍历 break; case 3: printf(\ Postorder(root); //后序遍历 break; case 4: depth=TreeDepth(root); //求树的深度及叶子数 printf(\ BinTree Node number=%d\ printf(\ BinTree Leaf number=%d\ break; case 5: printf(\ Levelorder(root); //按层次遍历 break; default: exit(1); } printf(\ } while(i!=0); }

实验结果:

Creat Bin_Tree; Input preorder:ABD###CE##F## ********** select ************ 1: Preorder Traversal 2: Iorder Traversal 3: Postorder traversal 4: PostTreeDepth,Node number,Leaf number

5: Level Depth 0: Exit ******************************* 1 Print Bin_tree Preorder: ABDCEF 2 Print Bin_Tree Inorder: DBAECF

3 Print Bin_Tree Postorder: DBEFCA

4 BinTree Depth=3 BinTree Node number=6 BinTree Leaf number=3 5 LevePrint Bin_Tree: ABCDEF 0 Press any key to continue 二叉树示意图

A B C D E F

心得体会:

这次实验加深了我对二叉树的印象,尤其是对二叉树的各种遍历操作有了一定的了解。同时认识到,在设计程序时辅以图形化的描述是非常有用处的。

搜索更多关于: 数据结构实验报告- 答案汇总 的文档
数据结构实验报告- 答案汇总.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1ziva4hhfu3y3j84vsq02xzhu2kzn0009ug_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top