第6章树和二叉part2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章树和二叉part2

第六章 树和二叉树 主讲:戚玉涛 第6章 树和二叉树 6.1 树的类型定义 6.2 二叉树的类型定义 6.3 二叉树的存储结构 6.4 二叉树的遍历 6.5 线索二叉树 6.6 树和森林的表示方法 6.7 树和森林的遍历 6.8 哈夫曼树与哈夫曼编码 二叉树的存储结构 二叉树的存储结构有两种: 顺序存储结构和链式存储结构。 顺序存储结构 二叉树的顺序存储 一般二叉树: 对照完全二叉树,存储在数组的相应分量中 二叉树的顺序存储 最坏情况:单支二叉树 二叉树的链式存储结构 二叉链表: data+lchild+rchild 三叉链表: data+lchild+rchild+parent 双亲链表 data+parent+LRTag 二叉链表 二叉链表结点的定义: typedef struct BiTNode { ElemType data; struct BiTNode *lchild,*rchild; } BiTNode, *BiTree; data表示值域,用于存储对应的数据元素。 lchild和rchild分别表示左指针域和右指针域,用于分别存储左孩子结点和右孩子结点(即左、右子树的根结点)的存储位置。 三叉链表 三叉链表结点的定义: typedef struct TriTNode { // 结点结构 TElemType data; struct TriTNode *parent; //双亲指针 struct TriTNode *lchild, *rchild; // 左右孩子指针 } TriTNode, *TriTree; 双亲链表 双亲链表的定义: typedef struct BPTNode { // 结点结构 TElemType data; int parent; // 指向双亲的指针 char LRTag; // 左、右孩子标志域 } BPTNode typedef struct BPTree{ // 树结构 BPTNode nodes [MAX_TREE_SIZE]; int num_node; // 结点数目 int root; // 根结点的位置 } BPTree 二叉树的遍历 遍历二叉树:顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。 “访问”的含义可以很广,如:输出结点的信息等。 实际中,常需要查找树中的结点,以便进行各种处理。但是由于树的结构特殊,查找树中的结点不像在线性表中那么方便,因此我们需要根据树的特点寻找一种方法来解决这个问题。 二叉树的遍历 一个二叉树由三部分组成:根、左子树、右子树。 用L、D、R分别表示遍历左子树、访问根结点、 遍历右子树。若限定先遍历左子树后遍历右子树,可以得到三种不同的遍历方法: 先序遍历(DLR) 中序遍历(LDR) 后序遍历(LRD) 三种遍历方法的递归定义 先序遍历(DLR)操作过程: 若二叉树为空, 则空操作, 否则 (1) 访问根结点;  (2) 按先序遍历左子树;  (3) 按先序遍历右子树。 三种遍历方法的递归定义 中序遍历(LDR)操作过程: 若二叉树为空,则空操作,否则: (1) 按中序遍历左子树;  (2) 访问根结点;  (3) 按中序遍历右子树。 后序遍历(LRD)操作过程:  若二叉树为空, 则空操作, 否则: (1) 按后序遍历左子树;  (2) 按后序遍历右子树;  (3) 访问根结点。 算术式的二叉树表示 二叉树表示的(二元)算术表达式: 层次遍历 是否还有其他遍历方法? 以上所讲遍历算法是以子树为单位进行访问的,遵循先左后右的规律,还存在着其他的方法,比如先右后左,从上到下、从左到右按层次遍历。 遍历算法的应用举例 1、统计二叉树中叶子结点的个数 2、求二叉树的深度 3、复制二叉树 4、建立二叉树的存储结构 统计二叉树中叶子结点的个数 算法基本思想: 先序( 或中序或后序 )遍历二叉树,在遍历过程中查找叶子结点,并计数。由此,需在遍历算法中增添一个“计

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档