网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构第六章树05.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
树的概念 树的遍历及存储 二叉树 二叉树的遍历 线索二叉树 赫夫曼树及其应用 ; 树的递定义 树是由 n (n ? 0) 个结点组成的有限集合。如果 n = 0,称为空树;如果 n 0,则 ? 有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱; ? 除根以外的其它结点划分为 m (m ? 0) 个 互不相交的有限集合T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的子树。;ADT List { 数据对象: D={ai|1?i ? n, n ? 0, ai属Elemtype类型 数据关系: R1={ ai ,aj | ai ,aj ?D, 1?i ? n, 1?j ? n, 每个元素只有一个前驱可以有多个后继} 基本运算: InitTree(T); ClearTree(T); Parent(T,cur_e); LeftChild(T,cur_e); RightSibling(T,cur_e); TraverseTree(T,visit()) };1层;定义: 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。;分别有0个 1个 2个 3个4个结点的不同二叉树如下;性质2 深度为 k 的二叉树至多有 2k-1个结点。(k ? 1);完全二叉树 (Complete Binary Tree);性质4 具有 n (n ? 0) 个结点的完全二叉树的深度为 ?log2(n+1)? -1 ;由于(性质5)完全二叉树按层次编号后,可确定各结点与其双亲及孩子的关系,则完全二叉树按编号次序进行顺序表示。;lchild data rchild;二叉树的链表表示;typedef struct BiTNode { //二叉树结点定义 TElemType data; //结点数据域 struct BiTNode * lchild, * rchild; } BiTNode,*BiTree; BiTree root; //根指针唯一确定二叉链表 ;二叉树的遍历;前序遍历二叉树: 若二叉树非空,则 访问根结点 (D) 前序遍历左子树 (L) 前序遍历右子树 (R);中序遍历二叉树: 若二叉树非空,则 中序遍历左子树 (L) 访问根结点 (D) 中序遍历右子树 (R);后序遍历二叉树: 若二叉树非空,则 后序遍历左子树 (L) 后序遍历右子树 (R) 访问根结点 (D);-;在二叉树中查找指定结点;int leaf (BiTree t ) { if ( t == NULL ) return 0; if (?) return 1; nl=leaf( ? ); nr=leaf( ? ); return nl+nr; }; 建立二叉树 由二叉树的前序序列和中序序列 可唯一地确定一棵二叉树。;前序序列 ABHFDECKG 中序序列 HBDFAEKCG ;中序遍历二叉树的非递归算法;;按层次遍历二叉树;§6.4 线索二叉树;?; 0 1;线索二叉树的遍历;线索二叉树的遍历;建立线索二叉树;树和森林的遍历;树和森林的遍历;树和森林的遍历;;? 孩子表示法;A;A;A;二叉树转换为树或森林;遍历二叉树 前序遍历序列: 中序遍历序列: 后序遍历序列: ;赫夫曼树 (Huffman Tree);具有相同的带权叶子有多种不同的二叉树;(1) 初始状态:构造具有 n 棵二叉树的森林 F = { T1, …, Tn},其中每棵二叉树 Ti 只有一 个带权值 wi 的根结点。 ;5;head编码: ;判定树;最佳判定树;小 结

文档评论(0)

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

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

1亿VIP精品文档

相关文档