云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构实验报告- 答案汇总

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

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 12:37:48

//========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

心得体会:

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

搜索更多关于: 数据结构实验报告- 答案汇总 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

//========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 后序遍历=====

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com