数据结构第6章 树和二叉树.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 树和二叉树;请设计一种存储方法,能便捷地找到每个文件所在的存储路径。即要求输入某个文件名称后,显示该文件在U盘中的存储路径,若U盘中无该文件,则显示“文件未找到”。;已知算术表达式6+(7-3)/2对应的表达式树如图所示: 请求出该表达式的值。; ;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;6.1.1 树;研究二叉树的意义? 二叉树的结构相对简单,其运算也自然简单,便于初学者入门。 由于多叉树可以借助一定的规则转换为二叉树,因此二叉树结构在应用中具有非常重要的地位。 ;二叉树的定义 二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。;二叉树的特点 每个结点的度只可能是0,1,2; 二叉树是有序树,即使某结点只有一棵子树,也要区分该子树是左子树还是右子树。 ;二叉树的5种基本形态;例:画出具有3个结点的树和具有3个结点的二叉树的形态;性质1 :二叉树的第i层上最多有2i-1个结点(i≥1)。 推广:深度为h的k叉树中,第i层上最多具有ki-1个结点。;性质2:一棵深度为k的二叉树中,最多有2k-1个结点,最少有k个结点。 深度为k且具有2k-1个结点的二叉树一定是满二叉树, 深度为k且具有k个结点的二叉树不一定是斜树。 ;性质3:在一棵二叉树中,如果叶子结点数为n0,度为2的结点数为n2,则有: n0=n2+1。 证明: 抓住结点总数=结点总度数+1 n0+n1+n2=n1+2*n2+1 n0=n2 +1 推广:已知一棵树度为m的树中有n1个度为1的结点,n2个度为2的结点,…nm个度为m的结点,问该树中有多少片叶子? 证明:根据结点总数=结点总度数+1 n0+n1+n2+…+nm=n1+2*n2+…+m*nm+1 = n0=1+n2+…+(m-1)nm;特殊的二叉树 满二叉树 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。 满二叉树的特点: 叶子只能出现在最下一层; 只有度为0和度为2的结点。;不是满二叉树,虽然所有分支结点都有左右子树,但叶子不在同一层上。;特殊的二叉树 完全二叉树 对一棵具有n个结点的二叉树按层序编号,如果编号为i(1≤i≤n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同。;在满二叉树中,从最后一个结点开始,连续去掉任意个结点,即是一棵完全二叉树。;;例:在有n个结点的满二叉树中,有多少个叶子结点? 因为在满二叉树中没有度为1的结点,只有度为0的叶子结点和度为2的分支结点,所以,n= n0 + n2 n0=n2 + 1 即叶子结点n0=(n + 1)/2 ;任一个有n个结点的二叉树,有m个叶子结点,则非叶子结点数(度为2)有多少个 ? 因为 n0=n2 + 1 n2 = n0 – 1 n2 = m - 1;证明:假设具有n个结点的完全二叉树的深度为k,根据完全二叉树的定义和性质2,有下式成立 2k-1 ≤ n < 2k; ;性质5 对一棵具有n个结点的完全二叉树中从1开始按层序编号,则对于任意的序号为i(1≤i≤n)的结点(简称为结点i),有: (1)如果i>1,则结点i的双亲结点的序号为 i/2;如果i=1,则结点i是根结点,无双亲结点。 (2)如果2i≤n,则结点i的左孩子的序号为2i; 如果2i>n,则结点i无左孩子。 (3)如果2i+1≤n,则结点i的右孩子的序号为2i+1 如果2i+1>n,则结点 i无右孩子。 ;;6.1.2 二叉树;6.1.2 二叉树;6.1.2 二叉树;6.1.2 二叉树;;一棵斜树的顺序存储会怎样呢?;6.1.2 二叉树;typedef struct BiTNode { ElemType data; struct BiTNode *lchild,*rchild; } *BiTree;;;;6.1.2 二叉树;如果限定先左后右,则二叉树遍历方式有三种: 先序:DLR 中序:LDR 后序:LRD;先序遍历的概念 ①若二叉树为空,则空操作返回; (否则) ②访问根结点; ③先序遍历根结点的左子树; ④先序遍历根结点的右子树。;先序遍历——递归算法;中序遍历的概念 ①若二叉树为空,则空操作返回; (否则) ②中序遍历

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档