已阅读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
- 2025年绍兴市越城区卫生健康系统事业单位招聘考试试卷真题
- 简历模板与劳动合同协议
- 皮肤病患者教育与科普
- 译林版英语四年级下册Unit7第二课时
- 食堂食品卫生安全知识培训考核试题(含答案)
- 新员工院感知识考核试卷
- (新)营养科工作制度2篇
- 2026毕节高速交警面试题目及答案
- 2025年中国珠尾机市场调查研究报告
- 2026年安徽省体育彩票管理中心编外聘用人员公开招聘11名考试参考题库及答案解析
- 2026重庆物流集团数字科技有限公司招聘3人笔试历年参考题库附带答案详解
- 2026年滨州国有资本投资运营集团有限公司公开招聘国有企业工作人员(15名)笔试参考题库及答案解析
- 2026广西能汇投资集团有限公司校园招聘笔试参考题库及答案解析
- 河南省顶级名校2026届高三年级5月押题导向卷(一)历史试卷(含答案及解析)
- 上海静安区社区工作者招聘考试真题2024
- 文化常识宗法礼俗节日
- 大学无机及分析化学考试题及答案
- 2022届上海市高考各区二模考试英语试卷(共13个区附答案)
- LY/T 1277-1998猎枪弹弹丸
- GB/T 40815.2-2021电气和电子设备机械结构符合英制系列和公制系列机柜的热管理第2部分:强迫风冷的确定方法
评论
0/150
提交评论