数据结构第6章二叉树.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第6章二叉树

第6章 树和二叉树 第6章 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.6 赫夫曼树及其应用 6.1 树的定义和基本术语 树的定义(递归定义):树是n(n≥0)个结点(元素)的有限集。 若 n=0,称为空树。 若 n 0,则 有且仅有一个特定的称为根的结点root; 当n 1时,除根以外的其他结点划分为m(m0) 个互不相交的有限集T1, T2,… Tm,其中每一个集合本身又是一棵树,并且称为根的子树。且对任意的i(m≥i≥1), Ti存在惟一的结点xi , 有root, xi ∈H,H为树中元素之间的二元关系集。 6.1 树的定义和基本术语 树的表示 6.1 树的定义-其他表示 树的其他表示----嵌套集合、凹入表示 6.1 树的定义-基本术语 基本术语 第6章 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.6 赫夫曼树及其应用 6.2 二叉树 二叉树的定义(递归定义) 特点:每个结点至多只有两棵子树,子树有左右之分 二叉树 : 度不大于2的有序树 ADT BinaryTree 6.2 二叉树 6.2 二叉树 6.2 二叉树-性质(1) 二叉树的性质 性质1:二叉树的第i层至多有2i-1个结点(i≥1) 性质2:深度为h的二叉树至多有2h –1个结点(h≥1) 思考:性质1和性质2推广到k叉树,结果会如何? 性质3:n0 = n2 + 1 结点总数 n = n0 + n1 + n2 分支数 n-1 = n1 + 2n2 6.2 二叉树-性质(2) 满二叉树:一棵深度为k且有2k –1个结点的二叉树(k≥0) 完全二叉树:对于深度为k的完全二叉树,则 1) 前k-1层为满二叉树; 2) 第k层结点依次占据最左边的位置; 3) 一个结点有右孩子,则它必有左孩子; 4) 度为1的结点个数为0或1 5) 叶子结点只可能在层次最大的两层上出现; 6) 对任一结点,若其右分支下的子孙的最大层次为l, 则其左分支下的子孙的最大层次必为l或l+1。 6.2 二叉树-性质(3) 性质4:具有n个结点的完全二叉树的深度为 由性质2 2k-1-1 n ≤ 2k-1 或 2k-1 ≤ n 2k 于是 k-1 ≤ log2n k 即 log2n k ≤ log2n+1 于是 得出结论 例:若一个完全二叉树有1450个结点,则度为1的结点个数为 ,度为2的结点个数为 ,叶子结点的个数为 ,有 个结点有左孩子,有 个结点有右孩子;该树的高度为 。 6.2 二叉树-性质(3) 6.2 二叉树-性质(4) 性质5:如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到第 层,每层从左到右),则对任一结点i (1 ≤ i ≤ n),有 (1) 如果i=1,则结点i是二叉树的根,无双亲;如果i 1, 则其双亲是结点 ; (2) 如果2i n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i ; (3) 如果2i + 1 n,则结点i无右孩子;否则其右孩子是结点2i + 1。 6.2 二叉树-练习 6.2 二叉树-练习 6.2 二叉树-顺序存储结构(1) 二叉树的顺序存储结构 类型定义 typedef ElemType SqBiTree[MAX_TREE_SIZE]; //0号单元存储根结点 1) 依据性质5,用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素; ——结点在存储区中的相对位置反映它们逻辑上的关系 2) 仅适用于完全二叉树 一般二叉树的顺序存储方法 通过补虚结点,将一般的二叉树变成完全二叉树 空间开销大! 6.2 二叉树-顺序存储结构(2) 6.2 二叉树-顺序存储结构(3) 空间利用率问题: 在最坏情况下,一个深度为k且只有k个结点的单支树(树中不存在度为2的结点),则需要长度为2k-1的一维数组。 6.2 二叉树-链式存储结构 二叉树的链式存储结构 引入辅助空间表示结点之间的关系:双亲-孩子 二叉链表(左、右孩子链域) 三叉链表(双亲及左、右孩子链域) 二叉链的类型定义(动态链表) typedef struct BiTNode { ElemType data; struct BiTNode *lchild, *rchild; // 左右孩子指针 }BiTNode, *BiTr

文档评论(0)

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

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

1亿VIP精品文档

相关文档