数据结构课件(第6章)树和二叉树.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课件(第6章)树和二叉树

第六章 树和二叉树;主要内容; 掌握二叉树的结构特性; 熟悉二叉树的各种存储结构的特点及适用范围; 掌握各种遍历策略的递归算法,能灵活运用遍历算法实现二叉树的其他操作; 理解二叉树线索化的实质,掌握二叉树的线索化过程。 熟悉树的各种存储结构及其特点,掌握树和与二叉树的转换方法,掌握树的遍历方法 ; 解哈夫曼树的特性,掌握构造哈夫曼树和哈夫曼编码的方法;;6.1.1 树的定义;6.1.2 若干术语;——即上层的那个结点(直接前驱) ——即下层结点的子树的根(直接后继) ——同一双亲下的同层结点(孩子之间互称兄弟) ——即双亲位于同一层的结点(但并非同一双亲); ——即从根到该结点所经分支的所有结点 ——即该结点下层子树中的任一结点;结点的层次 终端结点 分支结点;树的抽象数据类型定义;从逻辑结构看: 1)树中只有根结点没有前驱; 2)除根外,其余结点都有且仅一个前驱; 3)一对多(1:n),树的结点可以有零个或多个后继; 4)除根外的其他结点,都存在唯一条从根到该结点的路径; 5)树是一种分枝结构;教师;嵌套集合表示法;( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) 约定: 根作为由子树森林组成的表的名字写在表的左边;凹入表示法;A;6.1.5 树的运算 ; 为何要重点研究每结点最多只有两个 “叉” 的树? 二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树,不失一般性。;定义:是n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成 。 逻辑结构: 一对二(1:2) 基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点); ② 左子树和右子树次序不能颠倒。;问:具有3个结点的二叉树可能有几种不同形态? ;二叉树的抽象数据类型定义(P121-122);讨论1:第i层的结点数最多是多少? (利用二进制性质可轻松求出) ;性质3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数(n0)必定为n2+1 (即n0=n2+1);3. 深度为9的二叉树中至少有 个结点。 A)29 B)28 C)?? D)29-1;完全二叉树:深度为k 的、有n个结点的二叉树,当且仅当其每一个结点都与深度为k 的满二叉树中编号从1至n的结点一一对应。;性质4: 具有n个结点的完全二叉树的深度必为?log2n?+1.;性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)。 ; 一棵完全二叉树有1000个结点,则它必有 个叶子结点,有 个度为2的结点,有 个结点只有非空左子树,有 个结点只有非空右子树。;1 顺序存储结构 按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。; A;;每个结点至少包含三个域:数据域、左指针域、右指针域;在含有n个结点的二叉链表中有n+1个空链域。;二叉树链式存储举例: ; 三叉链表中每个结点至少包含四个域: 数据域、双亲指针域、左指针域、右指针域;6.3.1 遍历二叉树;遍历规则———;例1:;+;这实际上是先序遍历的递归定义,递归定义包括两个部分: 1)基本项(也叫终止项); 2)递归项; 下面给出先序、中序、后序遍历递归算法,为了增加算法的可读性,这里对书上算法作了简化,没有考虑访问结点出错的情况(即我们假设调用函数visit( )访问结点总是成功的。;void PreOrderTraverse(BiTree T, Status(*Visit)(TElemType e)) { //采用二叉链表存贮二叉树, visit( )是访问结点的函数。本算法先序遍历以T为根结点指针的二叉树,对每个数据元素调用函数Visit( ) if (T) { //若二叉树为空,结束返回 Visit(T-data); PreOrderTraverse(T-lchild, Visit); PreOrderTraverse(T-rchild, Visit); } }//PreOrderTraverse ;最简单的Visit函数是: Status PrintElement(TElemType e) {

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档