




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 实验目的和要求 理解二叉树的基本概念,熟练使用多种表示法构造二叉树,掌握采用二叉链表存储结构实现二叉树的构造、遍历、插入、删除等操作算法;理解线索二叉树的作用,掌握获得线索二叉树节点在指定遍历次序下的前驱或后继结点的方法;理解哈弗曼编码和哈弗曼树的作用,掌握由指定文本求得哈弗曼编码的方法。 理解树的基本概念,熟悉树的多种存储结构,掌握采用孩子兄弟链表存储结构实现树的遍历、插入、删除等操作算法。 通过研究树和二叉树,深刻理解链式存储结构用于表达非线性结构的作用,掌握采用递归算法实现递归数据结构基本操作的设计方法。二 题目及题意分析 题目:插入x元素作为p结点的第i个孩子 分析:以中国城市作为元素,以插入孩子结点的方式构造一棵树,找到结点p,p不为空时,若p的孩子结点为空,则直接插入x元素作为p的孩子;若p的孩子结点不为空,插入的x元素的位置n小于等于1时,将x元素直接插在最前面;若n大于1时,查找插入的位置执行插入。三 设计方案和功能说明 源程序如下:TreeNode.htemplateclass TreeNode /数的孩子兄弟链表结点类public: /数据域,保存元素T data;TreeNode* child,*sibling; /指针域,分别指向孩子兄弟结点TreeNode(T data,TreeNode*child=NULL,TreeNode*sibling=NULL) this-data=data;this-child=child;this-sibling=sibling;Tree.h#include#includeTreeNode.h /树的孩子兄弟链表节点类templateclass Tree /树类public:TreeNode*root; /指向根结点 Tree(); /构造空树 bool isEmpty();/判断是否空树 TreeNode* insertChild(TreeNode*p,T value); / 插入value作为结点p的孩子TreeNode* insertChild(TreeNode*p,T x,int i);/ 插入x元素作为p结点的第i个孩子friend ostream&operator(ostream&out,Tree&tree);/先根次序遍历树并以树的横向凹入表示法输出树 void preOrder(TreeNode *p,int i); ;templateTree:Tree() /构造空树root=NULL;templatebool Tree:isEmpty()/判断是否空树return root=NULL;templateTreeNode* Tree:insertChild(TreeNode*p,T value) /插入value作为结点p的孩子TreeNode*q=NULL;if(p!=NULL)q=new TreeNode (value);if(p-child=NULL)p-child=q;elsep=p-child;while(p-sibling!=NULL)p=p-sibling;p-sibling=q; return q;templateTreeNode*Tree:insertChild(TreeNode* p,T x,int i)/ 插入x元素作为p结点的第i个孩子 TreeNode*q=NULL; if(p!=NULL) q=new TreeNode(x); if(p-child=NULL) p-child=q; else if(ichild=new TreeNode(x,NULL,p-child); return p-child; p=p-child; for(int j=1;p-sibling!=NULL&jsibling; if( p-sibling=NULL) p-sibling=q; else p-sibling=new TreeNode(x,NULL,p-sibling); return q;templatevoid Tree:preOrder(TreeNode *p,int i) if(p!=NULL) for(int j=0;ji;j+)coutt;coutdatachild,i+1); preOrder(p-sibling,i); templateostream&operator(ostream&out,Tree &tree)/先根次序遍历树并以树的横向凹入表示法输出树 tree.preOrder(tree.root,0);return out;Main.cpp#include Tree.h TreeNode*aa; void make(Tree&tree) tree.root=new TreeNode(中国); tree.insertChild(tree.root,北京); tree.insertChild(tree.root,上海); TreeNode*js=tree.insertChild(tree.root,江苏省); tree.insertChild(js,南京市); tree.insertChild(js,苏州市); TreeNode *zj=tree.insertChild(tree.root,浙江省); tree.insertChild(zj,杭州市); tree.insertChild(zj,宁波市); TreeNode *sx=tree.insertChild(tree.root,山西省); tree.insertChild(sx,太原市); tree.insertChild(sx,大同市); aa=zj; int main() Treetree; make(tree); couttree; tree.insertChild(aa,无锡市,2); co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行招聘考试题讲解题及答案
- 银行业能力测试题及答案
- 上海专业考试试题及答案
- 药学专业招聘试题及答案
- 宣传专业试题及答案
- 《烹饪原料初加工工艺》项目四干货原料的初加工
- 湖北省十堰市 2025年 七年级上学期期中考试地理试卷(含答案)
- 墙体铝扣板施工方案
- 跨国贸易合同范本
- 2026届安徽省合肥市普通高中学业水平选择性考试物理模拟检测试卷(三)
- 2025北京京剧院招聘工作人员10人考试备考题库及答案解析
- 检修现场管理培训课件
- 信息网络安全考题「附答案」
- 消防设备设施操作讲解培训课件P
- 2025年执业医师考试-中医师承及确有专长考核历年参考题库含答案解析(5卷单选一百题)
- 中国绳结课件
- 中国民族服饰课件
- 第9课《天上有颗“南仁东星”》课件 2025-2026学年统编版八年级语文上册
- 早读的好处教学课件
- 人教版高一上学期数学(必修一)《1.3集合的基本运算》同步练习题及答案
- 大店童装开业活动方案
评论
0/150
提交评论