文档详情

第六章树和二叉树 A.ppt

发布:2017-06-14约6.13千字共43页下载文档
文本预览下载声明
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 树的概
显示全部
相似文档