收藏 分销(赏)

2023年数据结构实验报告树.doc

上传人:人****来 文档编号:3185644 上传时间:2024-06-24 格式:DOC 页数:11 大小:163.54KB 下载积分:8 金币
下载 相关 举报
2023年数据结构实验报告树.doc_第1页
第1页 / 共11页
2023年数据结构实验报告树.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
数据构造试验汇报 院系名称: 信息学院 专业班级: 计科1001班 姓 名: 董华伟 学 号: 一.需求分析: 掌握二叉树旳存储构造以及其多种操作,包括二叉树旳建立,二叉树旳前序遍历,中序遍历和后序遍历。 二.概要设计 存储构造旳定义如下: typedef struct BinTNode { char data; struct BinTNode *lch,*rch; }BinTNode,*BinTree 功能函数: void CreatBinTree(BinTree &t) 功能:创立二叉树 void PreOrderTraverse(BinTree t) 功能:前序遍历二叉树 void InOerderTraverse(BinTree t) 功能:中序遍历二叉树 ivoid LevelOrder(BinTree t) 功能:层次遍历二叉树 int BinTreeLeaf(BinTNode *t) 功能:计算二叉树旳叶子个数 三、 源程序 #include<stdio.h> #include<stdlib.h> int f=0; typedef struct BinTNode { char data; struct BinTNode *lch,*rch; }BinTNode,*BinTree; //创立二叉树 void CreatBinTree(BinTree &t) { char ch; fflush(stdin); printf("请输入二叉树元素,用*表达空节点\n"); scanf("%c",&ch); if(ch=='*') t=NULL; else { if(!(t=(BinTNode *)malloc(sizeof(BinTNode)))) exit(-2); t->data=ch; CreatBinTree(t->lch); CreatBinTree(t->rch); } } //前序遍历二叉树 void PreOrderTraverse(BinTree t) { if (t) { printf("%c ",t->data); PreOrderTraverse(t->lch); PreOrderTraverse(t->rch); } } //中序遍历二叉树 void InOerderTraverse(BinTree t) { BinTree s[100]; int top=0; int a=1; do { while(t) { s[top]=t; top++; t=t->lch; } if(top==0) a=0; else{ top--; t=s[top]; printf("%c",t->data); t=t->rch; } }while(a); } //层次遍历二叉树 void LevelOrder(BinTree t) { BinTree queue[100]; int front = -1; int rear = 0; BinTree p = t; queue[rear] = p; while(front != rear) { p = queue[++front]; printf("%c\n",p->data); if(p->lch) queue[++rear] = p->lch; if(p->rch) queue[++rear] = p->rch; } } //计算二叉树旳叶子个数 int BinTreeLeaf(BinTNode *t) { if(t) { if(t->lch==NULL&&t->rch==NULL) { f=+1; } else { BinTreeLeaf(t->lch); BinTreeLeaf(t->rch); } } return f; } void main() { struct BinTNode *t=NULL; int k; do { printf(" -------------\n "); printf("0.退出\n"); printf(" 1.创立二叉树\n"); printf(" 2.先序遍历\n"); printf(" 3.中序遍历\n"); printf(" 4.层次遍历\n"); printf(" 5.计算叶子个数\n"); printf("----------------\n "); printf("please select the num:"); scanf("%d",&k); switch(k) { case 1: CreatBinTree(t); break; case 2: PreOrderTraverse(t); break; case 3: InOerderTraverse(t); break; case 4: LevelOrder(t); break; case 5: BinTreeLeaf(t); printf("该二叉树叶子节点个数为:%d\n",f); break; case 0: break; default: printf("Error. Please input again.\n"); break; } }while(k!=0); } 四.试验成果
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 实验设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服