电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

内蒙古大学《算法与数据结构》课件第4章树与二叉树

168页
  • 卖家[上传人]:东***
  • 文档编号:270894060
  • 上传时间:2022-03-27
  • 文档格式:PDF
  • 文档大小:12.82MB
  • / 168 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1第第4章章 树与二叉树树与二叉树4.1 树的定义和相关术语树的定义和相关术语4.2 二叉树二叉树4.3 树与森林树与森林4.4 森林与二叉树的关系森林与二叉树的关系4.5 Huffman树与编码树与编码2内蒙古大学内蒙古大学理工学院理工学院计算机学院计算机学院生命科学学院生命科学学院外国语学院外国语学院人文学院人文学院数数学学系系物物理理系系电电子子系系计计算算机机系系计计算算中中心心网网络络中中心心汉汉语语系系历历史史系系哲哲学学系系生生物物系系环环境境系系动动物物中中心心生生物物工工程程中中心心资资源源所所英英语语系系日日语语系系 行政机构行政机构树形结构是一种非线性结构,应用十分广泛。树形结构是一种非线性结构,应用十分广泛。如:行政机构、磁盘目录、家谱等如:行政机构、磁盘目录、家谱等3磁磁 盘盘 目目 录录4的定义和基本术语的定义和基本术语5例例5.1: Tree=(D, R)D=Book, C1, C2, C3, S1.1, S1.2, S2.1, S2.2, S2.3, S2.1.1, S2.1.2 R=, , , , , , , , , Book C1 C2 C3 S1.

      2、1 S1.2 S2.1 S2.2 S2.3 S2.1.1 S2.1.2 ChapterSectionSectionv树是一种层次结构树是一种层次结构 (hierarchy structure)6v基本术语:基本术语:主要来源于家谱和树主要来源于家谱和树双亲、子女(双亲、子女(parent, child):):若若 R,则称,则称a是是b的双亲,的双亲,b是是a 的子女的子女(孩子孩子);结点度(结点度(degree):结点所拥有的子女数;结点所拥有的子女数;叶(叶(leaf):度为度为0的结点;的结点;分枝结点(分枝结点(branch node):度大于度大于0的结点;的结点;树的度树的度:树中最大的结点度;:树中最大的结点度;ABCDEFGHIJMKL7结点所在的层次(结点所在的层次(level):根在第根在第1层,其它任一结点所在的层是其双亲的层加层,其它任一结点所在的层是其双亲的层加1;深度或高(深度或高(depth):结点所在的层次的最大层数;结点所在的层次的最大层数;兄弟(兄弟(sibling):具有同一双亲的结点互称兄弟;具有同一双亲的结点互称兄弟;堂兄弟(堂兄弟(cous

      3、in):双亲在同层的双亲在同层的非兄弟结点非兄弟结点互称堂兄弟;互称堂兄弟;423ABCDEFGHIJMKL18ABCACB无序有序祖先、子孙(祖先、子孙(ancestor):一个结点是它所有子树中的结点的祖先一个结点是它所有子树中的结点的祖先,这些结点是它的子孙这些结点是它的子孙;路径(路径(path):):是一结点序列是一结点序列n1,n2,n3,nk,并且前并且前1个结点是后个结点是后1个结个结点的双亲;它的长度是点的双亲;它的长度是k-1;有序树(有序树(ordered tree):):每个结点的子女由左到右是有次序的;否则是无序树;每个结点的子女由左到右是有次序的;否则是无序树;423ABCDEFG H IJMKL19ABCDEFGHIJKLM结点结点A、B、C的度分别为:的度分别为:3、2、1叶子:叶子:K,L,F,G,M,I,J结点结点A的孩子:的孩子:B,C,D结点结点B的孩子:的孩子:E,F结点结点I的双亲:的双亲:D结点结点L的双亲:的双亲:E结点结点B,C,D为兄弟为兄弟结点结点K,L为兄弟为兄弟树的度:树的度:3结点结点A的层次:的层次:0结点结点M的层次:的层

      4、次:3树的深度:树的深度:3结点结点F,G为堂兄弟为堂兄弟结点结点A是结点是结点F,G的祖先的祖先10v森林(森林(Forest): m(m 0)棵互不相交的树的集合棵互不相交的树的集合.ArootBCDEFGHIJMKLF1112ABCDEFGHK根结点左子树左子树右子树右子树1314二叉树的二叉树的ADT定义定义 :ADT BinaryTree is Data 是有限个结点的集合是有限个结点的集合D。当。当D非空时,其中非空时,其中 有一根结点有一根结点t,其余结点被分为,其余结点被分为t的左子树和的左子树和 右子树。右子树。 Operations Constructor Process: 建立一棵空二叉树建立一棵空二叉树 Delete Process: 删除二叉树删除二叉树15 IsEmpty Process: 判断二叉树是否是空判断二叉树是否是空 Output: 若二叉树为空,则返回若二叉树为空,则返回true, 否则返回否则返回false Size Process: 计算二叉树的结点数计算二叉树的结点数size Output: size Height Process: 计算二

      5、叉树的高度计算二叉树的高度height Output: height Root Process: 取二叉树根结点值取二叉树根结点值x Output: 根结点值根结点值x16Parent Input: node是二叉树中的一个结点是二叉树中的一个结点 Process: 求求node的双亲的双亲p,若,若node 是根,则是根,则p为空为空 Output: p CreateBinaryTree Input: 二叉树的某种形式的定义二叉树的某种形式的定义definition Process: 根据此定义根据此定义definition构造二叉树构造二叉树 MakeTree Input: data是根结点值,是根结点值,left是左子树,是左子树,right是右子树是右子树 Process: 创建二叉树,创建二叉树,data是根结点值,是根结点值,left是其左子树,是其左子树, right是其右子树是其右子树17 BreakTree Process: 拆分二叉树,拆分二叉树,data是根结点数据,是根结点数据,left是左子树,是左子树, right是右子树是右子树 Output: data,

      6、 left, right PreOrder Input: Visit()是结点访问函数是结点访问函数 Process: 按前序遍历对二叉树中每个结点调用按前序遍历对二叉树中每个结点调用Visit( )1次且仅次且仅1次次 Output: 根据根据Visit( ),按前序遍历序列得到结果,按前序遍历序列得到结果 InOrder Input: Visit()是结点访问函数是结点访问函数 Process: 按中序遍历对二叉树中每个结点调用按中序遍历对二叉树中每个结点调用Visit( ) 1次且仅次且仅1次次 Output: 根据根据Visit( ),按中序遍历序列得到结果,按中序遍历序列得到结果18 PostOrder Input: Visit()是结点访问函数是结点访问函数 Process: 按后序遍历次序对二叉树中每个结点调用按后序遍历次序对二叉树中每个结点调用Visit( ) 1次且次且 仅仅1次次 Output: 根据根据Visit( ),按后序遍历序列得到结果,按后序遍历序列得到结果 LevelOrder Input: Visit()是结点访问函数是结点访问函数 Process:

      7、按层次对二叉树中每个结点调用按层次对二叉树中每个结点调用Visit( )1次且仅次且仅1次次 Output: 根据根据Visit( ),按层次遍历序列得到结果,按层次遍历序列得到结果/ BinaryTree 转转19编号完全二叉树的数组表示编号完全二叉树的数组表示 一般二叉树的数组表示一般二叉树的数组表示20 单分支树单分支树2122例:例:2324例:例:25二叉链表中结点定义如下:二叉链表中结点定义如下:class BinaryTreeNode DataType data; BinaryTreeNode *leftChild, *rightChild; /左指针左指针,右指针右指针 public : BinaryTreeNode(DataType &e, BinaryTreeNode *l=NULL,BinaryTreeNode *r=NULL) data = e; leftChild =l; rightChild = r; ;/BinaryTreeNode 26class BinaryTree BinaryTreeNode *root; /根结点指针根结点指针 public :

      8、BinaryTree( ) root = NULL; /创建一个空的二叉树创建一个空的二叉树 bool IsEmpty( ); /如果二叉树为空,则返回如果二叉树为空,则返回true,否则返回,否则返回false bool Root(DataType &x); /置置x为根结点值;若操作失败,则返回为根结点值;若操作失败,则返回false,否则返回,否则返回true void CreateBinaryTree(BinaryTreeNode *&t=root); /通过扩充二叉树的前序遍历序列,创建二叉树通过扩充二叉树的前序遍历序列,创建二叉树二叉链表定义如下:二叉链表定义如下:27void MakeTree(DataType &data,BinaryTree &left,BinaryTree &right);/创建二叉树,创建二叉树,data为根结点值,为根结点值,left作为左子树,作为左子树,right作为右子树作为右子树void BreakTree(DataType &data,BinaryTree &left,BinaryTree &right); /拆分二叉树拆分二叉树voi

      9、d PreOrder(void Visit(BinaryTreeNode *&), BinaryTreeNode *&=root);void InOrder(void Visit(BinaryTreeNode *&), BinaryTreeNode *&=root); void PostOrder(void Visit(BinaryTreeNode *&), BinaryTreeNode *&=root); void LevelOrder(void Visit(BinaryTreeNode *&); /逐层遍历逐层遍历/其中,其中,Visit作为遍历的过程参数,负责对结点的访问。作为遍历的过程参数,负责对结点的访问。28void Delete(BinaryTreeNode *&=root); /删除一棵二叉树,释放其结点。删除一棵二叉树,释放其结点。int Size(BinaryTreeNode *&=root);/返回二叉树中结点数。返回二叉树中结点数。int Height(BinaryTreeNode *&=root); /返回二叉树的高度。返回二叉树的高度。;/BinaryTre

      10、e基本操作的实现:基本操作的实现:bool IsEmpty( ) /如果二叉树为空,则返回如果二叉树为空,则返回true,否则返回,否则返回false return (root? true:false); 29bool Root(DataType &x) /置置x为根结点值,如果没有根结点,则返回为根结点值,如果没有根结点,则返回false if (root) root-data= x; return true; return false; / 没有根结点没有根结点void MakeTree(DataType &data, BinaryTree &left, BinaryTree &right) /用用left, right和和data构成一棵新树,构成一棵新树,left, right与当前二叉树必须与当前二叉树必须是不同的对象是不同的对象 root=new BinaryTreeNode(data, left.root, right.root); /创建新二叉树创建新二叉树 3031VLR123一、一、递归算法递归算法VRLRVLRLVVLRLVRLRV规定规定:先左后右遍历先左后右遍

      《内蒙古大学《算法与数据结构》课件第4章树与二叉树》由会员东***分享,可在线阅读,更多相关《内蒙古大学《算法与数据结构》课件第4章树与二叉树》请在金锄头文库上搜索。

      点击阅读更多内容
    TA的资源
    点击查看更多
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.