




已阅读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学年)
- 雨后的校园风景描写作文(7篇)
- 护理学专项题库大全及答案解析
- 从国内外角度对人工智能未来发展探索及影响的研究报告
- 成人反流误吸高危人群全身麻醉管理专家共识(2025版)解读 3
- 2025辽宁鞍山(国家)高新技术产业开发区招聘国有企业人员(二)笔试历年参考题库附带答案详解
- 淀粉加工工培训考核试卷及答案
- 网站推广代理服务合同5篇
- 2025年燃气职业技能鉴定全真模拟模拟题【各地真题】附答案详解
- 2025-2026学年辽海版(2024)小学美术二年级上册《巧用材料》教学设计
- 具身智能+农业种植智能农业机器人应用研究报告
- 量子计算在人工智能领域的发展趋势与2025年应用案例分析报告
- 医疗风险与安全培训课件
- 2025年未来就业报告
评论
0/150
提交评论