计算机科学课件 数据结构(五).ppt

计算机科学课件 数据结构(五).ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本概念 如果无向图G中任意两个顶点都是连通的,则称图G是连通图。 设图G=(V, E) 和图 G?=(V?,E?),且 V??V, E?? E, 则称 G? 为 G 的子图。 如果一个无向图不是连通图,则其中的每个极大连通子图称为无向图的连通分量。 基本概念 如果有向图G中任意两个顶点间都存在有向路径(对任意两个顶点v和w,既存在v到w的有向路径,也存在w到v的有向路径),则称有向图G是强连通图。其各个极大强连通子图称作它的强连通分量。 如果不考虑有向图中边的方向所得到的无向图是连通图,则有向图称为弱连通图。 基本概念 对于无向图而言,和顶点相关联的边的数目称为顶点的度。 对于有向图而言,从顶点出发的边的数目称为顶点的出度,到达该顶点的数目称为顶点的入度。 边上带有权值的有向图或无向图分别称作有向网或无向网。 上机作业 在机器上用C++分别实现Trie树。 数据结构(五) 常宝宝 北京大学计算机科学与技术系 内容提要 树和森林 键树 图状结构介绍 什么是树? 树是n(n≥1)个结点的有限集合,且: (1)有且仅有一个特定的称为根的结点。 (2)当n>1时,其余结点可分为m( m>0)个互不相交的有限集T1, T2, …, Tm,其中每一个集合本身又是一棵树,并且称为根的子树。 有序树:树中结点的各个子树 从左至右有序。 无序树:树中结点的各个子树 从左至右无序。 树结构和线性表 树: 只有一个结点(根结点)无前趋。 存在多个结点(叶子结点)无后继。 其余结点有一个前趋和多个后继。 线性表 只有一个结点无前趋。 只有一个结点无后继。 其余结点有一个前趋和一个后继。 基本概念 有关树的基本概念:子结点、父结点、叶子结点、兄弟结点、分支结点、内部结点、结点的层数、树的高度、结点的度、树的度 树的度:树内各结点的度的最大值。 如:2 度树、3 度树 结点的祖先和子孙: 结点的祖先是从根结点到该结点所经路径上的所有结点。以某结点为根的子树中的任一结点都称为该结点的子孙。 二叉树和树 二度树是否是二叉树? 严格说来,二度树和二叉树是不同的。 当二度树中某结点含有一个子结点时,无左右之分。二叉树可以是空二叉树,但通常规定树不能为空。 赵老根 赵跃进 赵小康 赵改革 赵开放 赵解放 赵抗美 赵卫兵 赵永红 森林 森林是m(m≥0)棵互不相交的树的集合。 对于一棵树而言,树中每个结点的所有子树即为一个森林,通常也称做结点的子树森林。 树 = 根结点 + 子树森林 森林 = 树的集合 树的实现 采用链式存储,对于一个m度树,每个结点设计m个指向子树的指针域。 采用这种存储方式,空间浪费严重。若一个m度树共含有n个结点,所有指针中空指针所占的比率为: 采用链式存储,为树中每个结点设计一个指针域,指向其父结点。 采用这种存储方式,没有空间浪费,可以很容易求得指定结点的父结点,但求得指定结点却很困难。 森林和二叉树 定理:令S是一个结点的有限集合。B是S上的二叉树的集合。F是S上所有森林的集合。则对于B中的任何一棵二叉树B,在F中必有唯一一个森林F与之对应,反之亦然。 如何从森林转换成二叉树? 如果F = {T1,T2,…,Tm}是森林,则可按照如下的规则将其转换成一棵二叉树B = (root, LB, RB)。 (1)若F为空,即m=0,则B为空。 (2)若F非空,即m≠0,则B的根root即为森林中第一棵树的根ROOT(T1);B的左子树LB是从T1中根节点的子树森林F1={T11,T12,…, T1m1}转换而成的二叉树;其右子树RB是从森林F'={T2, T3, …, Tm}转换而成的二叉树。 二叉树和森林 如何从二叉树转换成森林? 如果B = (root, LB, RB)是一棵二叉树,则可按照如下规则转换成森林F = {T1,T2,…,Tm}。 (1)若B为空,则F为空。 (2)若B非空,则F中第一棵树T1的根ROOT(T1)即为二叉树的根root;T1中根结点的子树森林F1是由B的左子树LB转换而成的森林;F中除T1之外其余树组成的森林F'={T2, T3, …, Tm}是由B的右子树RB转换而成的森林。 树或森林可以转换成二叉树的形式予以实现。 森林和二叉树的转换 森林中某结点的第一个子结点在二叉树中是该结点的左子结点。森林中某结点的下一个兄弟结点是二叉树中该结点的右子结点。 森林和二叉树的转换 由树转换成的二叉树,根结点的右子树是空二叉树。 结点实现 通常把树或森林转换成二叉树采用链式存储实现,此时,树中的结点可用C++作如下定义: template <typename Entry> struct Tree_node { Entr

文档评论(0)

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

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

1亿VIP精品文档

相关文档