版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目课程设计目 课程设计目 课程设计任 课程设计要 分析与设 题目需求分 结构设 算法描 程序流程 测试程序说 程序测 测试数 分 总 参考文 运用树特别是二叉树根据树的相关概念了解树的方法和算法及应用以及二叉树的方法、遍历、算法和应用。同时在此基础上对树和二叉树的转换的实现进行编程掌握。这次课程设计的目标是通过这次的课程设计,能够使在数的训练培养工作所需要的动手能力熟练的掌握数据结构有关知识的应用,分析树和二叉树的结构,二叉树的结构如图2.1图2.1二叉树的结构有三种结构,即双亲表示法、孩子表示法、和孩子兄弟表示法。事实上一棵树采用孩子兄弟表示法所建立的结构与它所对应的二叉树的二叉链表结构是完全相同的,只是两个指针域的名称及解释不同而已,通2.2123、层次调整:以根结点为,将整棵树旋转,使之层次分明2.4一般树的结构有以下几种:双亲结点,孩子结点,孩子兄弟结点。本实验运用到的是双亲结点和孩子兄弟结点。具体结构如下typedefstructst1/{chardata;//charstructst1*children[DEGREE];/typedefstructst2{chardata;//structst2*lchild,*rchild;/voidpreorderTree(CTreeNode{CTreeNode*ctchild;inti; }}
voidPreorder(BTreeNode*T){{cout<<T->data<<"";Preorder(T-}}CTreeNode*CreateSTree(parentNode=SearchCTree(root,parent)查找指定数据的结点。CTreeNode*CreateSTree(){intchardata,CTreeNode*root,*parentNode,*node;returnNULL;//空树,结束函数root=(CTreeNode*)malloc(sizeof(CTreeNode));{node=(CTreeNode*)malloc(sizeof(CTreeNode));{if(parentNode-{}}}return}*CTreeArray[MAX_NODE_NUMtypedefstructnodeCTree{CTreeNode*CTreeArray[MAX_NODE_NUM];intCTreeFront,CTreeRear;typedefstruct{BTreeNode*BTreeArray[MAX_NODE_NUM];intBTreeFront,BTreeRear;下面是将树转换为二叉树的主要程序段,ctroot一直向右,遇到的右均依次作为树的(二叉树中结点的右中变为该voidTreeToBTree(CTreeNode*ctroot,BTreeNode{QueueCTree*VisitedCTreeNodes;QueueBTree*VisitedBTreeNodes;//辅助队列initQueueCTree(VisitedCTreeNodes);CTreeNode*ctnode;BTreeNode*btnode,*p,*LastSibling;inti;btroot=(BTreeNode*)malloc(sizeof(BTreeNode)); {{p=(BTreeNode*)malloc(sizeof(BTreeNode));
btnode-LastSibling-}}usingnamespacestd;#defineDEGREE5#defineNULL0#defineQUEUESIZE#defineMAX_NODE_NUMtypedefstructst1//树结点的类{chardata;//数据域,采用charstructst1*children[DEGREE]typedefstructst2{chardatastructst2*lchild,*rchild;/CTreeNode*SearchCTree(CTreeNode*root,char{intCTreeNode*returnNode;returnroot;{{returnNULL;{return}}}}CTreeNode{intchardata,CTreeNode*root,*parentNode,*node;returnNULL;//空树,结束函数root=(CTreeNode*)malloc(sizeof(CTreeNode));{cin>>data>>parent;//切记当以%c格式输入数据时候,不要输入空格node=(CTreeNode*)malloc(sizeof(CTreeNode));//printf("验证parent=%c\n",parent);{{}}}return}voidpreorderTree(CTreeNode*ctroot)//遍历每个节点的操作就是输出该结点的data{CTreeNode*ctchild;inti;cout<<ctroot->data<<"";//先遍历根结点{}}typedefstructnodeCTree{//structnodeCTree*next;int}typedefstructnodeBTree{//structnodeBTree*next;intvoidinitQueueCTree(QueueCTree{q=(QueueCTree*)malloc(sizeof(QueueCTree));}voidinitQueueBTree(QueueBTree{q=(QueueBTree*)malloc(sizeof(QueueBTree));}intaddQueueCTree(QueueCTree*&q,CTreeNode{return0;return1;//入队}intaddQueueBTree(QueueBTree*&q,BTreeNode{return0;return1;//入队}intQueueCTreeEmpty(QueueCTree{}intQueueBTreeEmpty(QueueBTree{}CTreeNode*delQueueCTree(QueueCTree{CTreeNodereturnNULL;//返回空指针returnctroot;//返回结}BTreeNode*delQueueBTree(QueueBTree{BTreeNodereturnNULL;//返回空指针returnbtroot;//返回节}voidTreeToBTree(CTreeNode*ctroot,BTreeNode*&btroot)//树转化为二叉树ctroot{QueueCTree*VisitedCTreeNodes;QueueBTree*VisitedBTreeNodes;//辅助队列CTreeNode*ctnode;BTreeNode*btnode,*p,*LastSibling;inti;btroot=(BTreeNode*)malloc(sizeof(BTreeNode));//添加开辟内存空间语句{{p=(BTreeNode*)malloc(sizeof(BTreeNode));//分配二叉树结 }}}voidPreorder(BTreeNode{{cout<<T->data<<"";}}int{CTreeNode*Tree;BTreeNode*BTree;return0;}树的先序遍历结果:bac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度企业融资租赁合同补充协议4篇
- 重汽降价销售方案
- 2025版挖掘机产品租赁与融资租赁合同范本3篇
- 二零二五年度个人债务重组抵押借款合同样本
- 2025版物业管理师执业资格考试教材配套教辅材料合同3篇
- 二零二五年度文化教育平台运营合同协议书4篇
- 二零二五版数据中心电力设备维保及应急响应合同3篇
- 钻井现场防爆措施方案
- 二零二五个人个人土地承包经营合同示范文本
- 二零二五年度环保工业园区施工环保及文明规范协议3篇
- 寺院消防安全培训课件
- 比摩阻-管径-流量计算公式
- 专题23平抛运动临界问题相遇问题类平抛运和斜抛运动
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 五年级数学应用题100道
- 西方经济学(第二版)完整整套课件(马工程)
- 高三开学收心班会课件
- GB/T 33688-2017选煤磁选设备工艺效果评定方法
- 科技计划项目申报培训
- 591食堂不合格食品处置制度
- 黑布林绘本 Dad-for-Sale 出售爸爸课件
评论
0/150
提交评论