树的概念 与 遍历算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树的概念 与 遍历算法

树的概念 与 遍历算法 2008/03/25 表达式分析与计算 表达式分析与计算(续) 表达式分析与计算(续) 关于表达式分析与求解 这个问题的本质是什么?与原来遇到的问题有什么不同? 本讲主要内容: 树结构概念 树结构的特点 二叉树概念 二叉树的抽象数据结构实现 树的周游(遍历) 树结构概念: 树(tree)的定义: 定义:树是n( n≥0 )个结点的有限集T,其中: 当n=0时称为空树。有且仅有一个特定的结点,称为树的根(root) 当n1时,其余结点可分为m(m0)个互不相交的有限 T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree) 特点: 树中各子树是互不相交的集合。 树结构的表示:层次关系 + 划分 树(tree)的定义: 定义:树是n(n0)个结点的有限集T,其中: 有且仅有一个特定的结点,称为树的根(root) 当n1时,其余结点可分为m(m0)个互不相交的有限 T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree) 特点: 树中至少有一个结点——根(root) 树中各子树是互不相交的集合。 树结构的表示:层次化的语言结构 树结构特点: 有根 分层 (有序) 构成‘划分’ 除根结点,其它结点有唯一前驱。 所有结点可以有零个或多个后继。 数据元素之间存在一对多或多对一关系。 树的基本术语: 结点(node)——表示树中的元素,包括数据项及若干指向其子树的分支 结点的度(degree) —— 结点拥有的子树数 叶子(leaf) —— 度为0的结点 孩子(child) —— 结点子树的根称为该结点的孩子 双亲(parents) —— 孩子结点的上层结点叫该结点的~ 兄弟(sibling) —— 同一双亲的孩子 树的度 —— 一棵树中最大的结点度数 结点的层次(level) —— 根为第0层,它的孩子为第1层…… 深度(depth) —— 树中结点的最大层次数。 树结构特点总结: 有根 分层 (有序) 构成‘划分’ 除根结点,其它结点有唯一前驱。 所有结点可以有零个或多个后继。 数据元素之间存在一对多或多对一关系。 二叉树: 二叉树的基本形态 二叉树的一些数学特性 性质1 在非空二叉树的i层上至多有2i个结点(i≥0)。 20 ? 21 ? 22 … ? 2i 性质2 高度为k的二叉树中最多有2k+1 - 1个结点(k≥0)。 20 + 21 + 22 … + 2i 二叉树的一些相关概念 —— 满二叉树 如果一棵二叉树的任何结点或者是树叶结点,或有两棵非空子树,则此二叉树称作满二叉树。 在满二叉树中,叶结点的个数比分支结点个数多1。 N2 = N0 - 1 完全二叉树 如果一棵二叉树至多只有最下面的两层结点度数可以小于2,其余各层结点度数都必须为2, 并且最下面一层的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。 完全二叉树不一定是满二叉树。 完全二叉树的重要特性 对于具有n个结点的完全二叉树,如果按照从上(根结点)到下 (叶结点)和从左到右的顺序对二叉树中的所有结点从0开始到n-1进行编号,则对于任意的下标为i的结点,有: (1) 如果 i = 0,是根结点。如果i>0,则其父结点的下标为 ?i/2? ; (2) 如果2i+1 ≤ n-1,则下标为i的结点的左子结点的下标为2i+1;否则,i结点没有左子结点: (3) 如果2i+2 ≤ 1,则下标为i的结点的右子结点的下标为2i+2。否则,i的结点没有右子结点。 二叉树结构的ADT定义 链接结构的二叉树的定义(简单处理) 建立一个空二叉树 BinTree createEmptyTree( void ) { BinTree t = (BinTree)malloc(sizeof(BinTree)); if (t!=NULL) return (t); else printf(Out of space!! \n); return (t); } 建立一个带左右子树的二叉树 BinTree consBintree (DataType val, BinTree left, BinTree right) { BinTree root = (BinTree)malloc(sizeof(struct Node)); if (root != NULL) { root-info = val; root-llink = left; root-rlink = right; } else printf(out

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档