- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* (3)若n为奇数,则每个分支结点都既有左孩子结点,也有右孩子结点;若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子结点,没有右孩子结点,其余分支结点都有左、右孩子结点。 L 12 * 讨论:满二叉树和完全二叉树有什么区别? 答:满二叉树是叶子一个也不少的树,而完全二叉树虽然前k-1层是满的,但最底层却允许在右边缺少连续若干个结点。满二叉树是完全二叉树的一个特例。 为何要研究这两种特殊形式? 因为它们在顺序存储方式下可以复原! * 3. 深度为9的二叉树中至少有 个结点。 A)29 B)28 C)9 D)29-1 2.深度为K的二叉树的结点总数,最多为 个。 A)2k-1 B) log2k C) 2k-1 D)2k 1. 树T中各结点的度的最大值称为树T的 。 A) 高度 B) 层次 C) 深度 D) 度 D C C 课堂练习: * 一棵完全二叉树有1000个结点,则它必有 个叶子结点,有 个度为2的结点,有 个结点只有非空左子树,有 个结点只有非空右子树。 例: 1 0 分析题意:已知n=1000,求n0和n2,还要判断末叶子是挂在左边还是右边? 答案: 因为最后一个结点编号1000是偶数,所以它必为编号为500的节点的左子树。因此,度为1的节点数为1个,即n1=1,有1个结点只有非空左子树 全部叶子数=n0 ,则根据性质3,度为2的结点数n2=n0-1。 由:1000=n0+n2+1 故:n0=500, n2=499. 请注意:叶子结点总数≠末层叶子数!!! 500 499 * 三、 二叉树的存储结构 1、顺序存储 对完全二叉树的结点按“自上而下、从左至右”编号,用一组连续的存储单元存储。将编号为i的结点存储在i-1号单元中。 A B C D E F G H I [0] [1] [2] [3] [4] [5] [6] [7] [8] A B C G E I D H F #define MAX_TREE_SIZE 100 // 二叉树的最大结点数 typedef TElemType SqBiTree[MAX_TREE_SIZE]; // 0号单元存储根结点 SqBiTree bt; 7 9 5 6 3 4 1 2 8 * 讨论:不是完全二叉树怎么办? 答:一律转为完全二叉树! 方法很简单,将各层空缺处统统补上“虚结点”,其内容为空。 A B ^ C ^ ^ ^ D ^ … E [0] [1] [2] [3] [4] [5] [6] [7] [8] … [15] A B E C D 缺点:①浪费空间; ②插入、删除不便 * 1 3 7 15 A B C D E F G H I J K 在最坏的情况下,一个深度为h且只有h个结点的右单支树却需要2h-1个结点 存储空间。 * A D E B C F ? ? ? ? ? ? ? root lchild data rchild 结点结构: (1) 二叉链表 2、链式存储(重点) 优点:①不浪费空间; ②插入、删除方便 * typedef struct BiTNode { // 结点结构 TElemType data; struct BiTNode *lchild, *rchild; // 左右孩子指针 } BiTNode, *BiTree; 一般从根结点开始存储。(相应地,访问树中结点时也只能从根开始) 注:寻找孩子结点容易,如果需要倒查某结点的双亲,可以再增加一个双亲域(直接前趋)指针,将二叉链表变成三叉链表。 * 二叉树及其链式存储结构 对于一个n个节点的二叉树,其分支数目B=n-1,一个分支数 对应一个非空链域。即非空的链域有n-1个, 故空链域有2n-(n-1)=n+1个。 * A D E B C F ? ? ? ? ? ? ? root ? (2)三叉链表 parent lchild data rchild 结点结构: * 例:一棵二叉树的结点数据采用顺序存储结构,存储于数组t中,如图所示。试画出该二叉树及其链式存储结构形式。 * 数据结构课程的内容: * 6.1 树的基本概念 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 赫夫曼树及其应用 特点:非线性结构,一个直接前驱,但可能有多个直接后继。 (一对多或1:n) 二叉树的定义、性质和存储结构 二叉树的运算 第6章
文档评论(0)