- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章树和二叉树 A
6.1 树的概念 6.1 树的概念 家族树 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.1 树的概念 6.2 二叉树(重点) 6.2.1 二叉树的概念 6.2.1 二叉树的概念 6.2.1 二叉树的概念 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 6.2.2 二叉树的性质 性质 5: 如果对一棵有n个结点的完全二叉树(其深度为?log2n? +1 )的结点按层序编号(从第1层到第?log2n? +1层,每层从左到右),则对任一结点i (1=i=n),有: 1)若i=1,则结点i是二叉树的根,无双亲; 2)若i1,则其双亲是结点是?i/2? :若2in,则结点i无左孩子,否则其左孩子是结点2i. 3)若2i+1n,则结点i无右孩子;否则其右孩子是结点2i+1. 课堂练习: 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 6.2.3 二叉树的存储 算法思想: (1)依次输入结点信息(ch),若不是虚结点,则建立一个新结点; 1)若新结点是第一个结点,则令其为根结点; 2)否则,将新结点作为孩子链接到它的双亲结点上. (2)重复(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) 度 √ √ √ 一、顺序存储结构 按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。 A B C D E F G H I [1] [2] [3] [4] [5] [6] [7] [8] [9] A B C G E I D H F data[0]不用 问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。 而且有规律:下标值为i的双亲,其左孩子的下标值必为2i,其右孩子的下标值必为2i+1(即性质5) 例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必是D,右孩子必为E。 讨论:不是完全二叉树怎么办? 答:一律转为完全二叉树! 方法很简单,将各层空缺处统统补上“虚结点”,其内容为空。 A B ^ C ^ ^ ^ D ^ … E [1] [2] [3] [4] [5] [6] [7] [8] [9] . [16] A B E C D 缺点:①浪费空间;②插入、删除不便 二、链式存储结构用二叉链表即可方便表示。 data lchild rchild data lchild rchild 一般从根结点开始存储。(相应地,访问树中结点时也只能从根开始) 提示:如果需要倒查某结点的双亲,可以再增加一个双亲域(直接前趋)指针,将二叉链表变成三叉链表。 二叉树结点数据类型定义: Typedef struct BiTNode{ TElemType data; Struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; data lchild rchild 实例1: A B E C D ^ A B ^ D ^ C ^ ^ E ^ 实例2: A B C D E F G ^ A ^ B ^ C D E ^ F ^ G ^ ^ ^ 三、二叉树的生成 思路:按层次顺序依次输入结点信息创建二叉链表。 输入序列:按层序遍历二叉树所得的序列,每个结点度设为2,虚结点用‘@’表示。以‘#’ 为序列结束符。 A B E D C F 输入序列:ABCD@EF# 问题关键: 如何将新结点正确链接到它的双亲结点上? 解决方法:利用顺序队列实现.(数组下标从1开始) 队头指针(front)指向当前结点的双亲; 队尾指针(rear)指向当前结点. 经济与管理学院 李春丽 1 2 树的概
文档评论(0)