图、邻接矩阵、广度与深度优先、生成树

这篇具有很好参考价值的文章主要介绍了图、邻接矩阵、广度与深度优先、生成树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近突然被问到这个问题,于是复习一下,用最通俗的语言解释。

无向图:如下左图各个顶点之间用不带箭头的边连接的图;相应的右图就是有向图

图、邻接矩阵、广度与深度优先、生成树               图、邻接矩阵、广度与深度优先、生成树

 邻接矩阵

可以理解为表示上述图中顶点与顶点之间是否有直接相连的边(有则是1,无则是0),描述这种关系的二维数组。如下两幅图中的二维矩阵:

图、邻接矩阵、广度与深度优先、生成树

 图、邻接矩阵、广度与深度优先、生成树

 易知,每个图都可以用对应的邻接矩阵表示出来。其中图1邻接矩阵是非对称的,图2中的邻接矩阵却是对称的(沿主对角线)。

 广度搜索优先遍历

无论广度/深度搜索,均遵循原则:按顺序入队且先入的先出,直到所有的顶点均出完就结束搜索。

结合例子我们先说广度搜索,我理解为同级别的顶点按顺序先遍历完再搜索下一级别的顶点,这样一级一级往下,直到底。

如上面的图G1,以A为顶点广度搜索:

图、邻接矩阵、广度与深度优先、生成树 图、邻接矩阵、广度与深度优先、生成树

深度搜索优先遍历

 深度搜索优先我理解为一颗倒拔过来的杨柳树,一根枝条摸完摸到底再摸下一根枝条。为了好理解可以每次只入队1个顶点,当一根枝条达到底部时就返回上一级(上上一级、上上上级.......)看是否有为入队过的枝条。如上图的G1以A为顶点深度搜索优先就应该是:

图、邻接矩阵、广度与深度优先、生成树 图、邻接矩阵、广度与深度优先、生成树

由上面两幅图,很容易理解广度与深度优先,那么G2图的广度、深度优先也容易,即如下:

图、邻接矩阵、广度与深度优先、生成树 图、邻接矩阵、广度与深度优先、生成树  图、邻接矩阵、广度与深度优先、生成树

即广度顺序是A->B->C->E->F->D->G 而深度顺序是A->B->C->E->D->F->G 

那么对于图4这种不是图而是用邻接矩阵表示顶点间关系的我们该怎么搜索呢?其实是一样道理,如图4的广度搜索应如下:

图、邻接矩阵、广度与深度优先、生成树即D=0134256答案错了一个顺序。继续看另几个答案:

图、邻接矩阵、广度与深度优先、生成树A应该是0243165,所以A也不正确,即绿框所示0423165即答案C正确。(看到这里,我发现对于顶点0,分叉为12346五根枝条,原来随便摸这其中的一根就可以了,并不一定是只摸1,要不然这道题就没有正确答案了。)

生成树

理解了上面说的广度、深度优先,我们可以像上面一样计算得到相应的搜索顺序,然后我们根据顺序去画广度优先生成树、深度优先生成树。以图4中的邻接矩阵为例,广度优先搜索生成树就是如下所示,入队的顶点是出队的顶点的下一级,用边连接即可画出:

图、邻接矩阵、广度与深度优先、生成树

图、邻接矩阵、广度与深度优先、生成树

 我们再看图3,图3是不对称的邻接矩阵,意味着有的点是单向连接、有的是双向,而且看得出这个邻接矩阵顶点很多,画图反而有点乱,我们不必画图结构,而是直接跟图4一样使用邻接矩阵直接得到顺序与生成树。

图、邻接矩阵、广度与深度优先、生成树对于这个邻接矩阵,按上述的内容介绍,我们很容易可以像下图一样得到广度搜索优先、深度搜索优先的序列与生成树:

图、邻接矩阵、广度与深度优先、生成树

 大家看上图的左上角我是以行r入队,列c作为出队,但我们直到图4的邻接矩阵不是对称的,所以如果以列c入队、以行r作为出队呢?那就结果不一样了,如下图所示:

图、邻接矩阵、广度与深度优先、生成树

 至此关于图、邻接矩阵、广度与深度搜索优先、生成树的理论我们已了解。既然看明白了,大家可以拿别人提出的这两个问题练手:https://ask.csdn.net/questions/7834198/54071027 https://ask.csdn.net/questions/7458167/54071013

二叉树

前序、中序、后序原则

记住原则:前序是:根节点、左节点、右节点; 中序是:左、根、右   ; 后序是:左、右、根

 其实不用记,古人习惯从右到左,我们现代人习惯从左到右,而前中后说的是根的位置。前序就是将根插在左右之前,中序就是将根插在左右之中,后序就是将根插在左右之后。

所以对于已经两种序列求二叉树图并求另一个序列的题目就很好做了,如已知前序遍历: GDAFEMHZ 而中序遍历: ADEFGHMZ 求二叉树图?这种思路就是前序给出了最大的根节点G,然后中序给出了所有的左节点ADEF以及右节点HMZ,然后再根据原则去慢慢画出如图中1~9:

图、邻接矩阵、广度与深度优先、生成树 图、邻接矩阵、广度与深度优先、生成树

可以以别人提的另一个问题练手:https://ask.csdn.net/questions/7963394/54236684

####################################################################

大家若有空,帮我**一下,谢谢

图、邻接矩阵、广度与深度优先、生成树

参考:

数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)_正弦定理的博客-CSDN博客_无向图的邻接表的广度遍历

数据结构—无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版)_正弦定理的博客-CSDN博客_邻接矩阵广度优先遍历c语言文章来源地址https://www.toymoban.com/news/detail-445199.html

到了这里,关于图、邻接矩阵、广度与深度优先、生成树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用邻接矩阵进行的深度优先和广度优先遍历(含全部代码+图解)

    目录     --------------------------------------目录------------------------------------------ 图的定义和术语 图的邻接矩阵构建法   深度优先遍历算法(DFS)   广度优先遍历算法 (BFS) 全部代码          图 :G = (V,E) V:顶点的有穷非空集合 E:边的有穷集合          无向图 :每条

    2024年02月05日
    浏览(27)
  • 【数据结构与算法】图的基本概念 | 邻接矩阵和邻接表 | 广度优先遍历和深度优先遍历

    🌠 作者:@ 阿亮joy. 🎆 专栏:《数据结构与算法要啸着学》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E) ,其中: 顶点集合V = {x|x属于某

    2024年02月04日
    浏览(60)
  • 基于邻接矩阵的有向图的广度优先遍历(BFS)和深度优先遍历(DFS)算法

    概念: 广度优先遍历算法是图的另一种基本遍历算法,其基本思想是尽最大程度辐射能够覆盖的节点,并对其进行访问。 以迷宫为例,广度优先搜索则可以想象成一组人一起朝不同的方向走迷宫,当出现新的未走过的路的时候,可以理解成一个人有分身术,继续从不同的方

    2024年02月06日
    浏览(49)
  • 数据结构实验6 :图的存储与遍历(邻接矩阵的深度优先遍历DFS和邻接表的广度优先遍历BFS)

    利用邻接矩阵存储无向图,并从0号顶点开始进行深度优先遍历。 输入第一行是两个整数n1 n2,其中n1表示顶点数(则顶点编号为0至n1-1),n2表示图中的边数。 之后有n2行输入,每行输入表示一条边,格式是“顶点1 顶点2”,把边插入图中。 例如: 4 4 0 1 1 3 0 3 0 2 先输出存储

    2024年02月09日
    浏览(54)
  • 广度优先遍历(邻接表,邻接矩阵)

        广度优先遍历又称为广度优先搜索,简称BFS     如果说图的深度优先遍历(图的深度优先遍历相关内容:图的深度优先遍历)类似树的前序遍历,那么图的广度优先遍历就类似于树的层序遍历。     具体遍历过程如下图所示:     就如上面的第三个图上所编写的序号进

    2024年02月10日
    浏览(32)
  • 邻接表按深度优先遍历和按广度优先遍历的序列

    求此邻接表的深度优先遍历序列和广度优先遍历序列。   深度优先:按深度优先遍历时会有类似\\\"跳转\\\"的操作,比如例1中顶点v1→边v2后,会直接跳转到顶点v2去,再重新从顶点v2→边v1,由于v1访问过,所以变为v2→边v5,再跳转到顶点v5去,直到每个顶点都被访问过。抽象理解

    2024年02月04日
    浏览(34)
  • C++实现图—邻接矩阵,邻接表,深度遍历,广度遍历

    目录 1.图的基本概念 2.图的存储结构 2.1邻接矩阵 2.2 邻接表 3.图的遍历 3.1广度优先遍历 3.2图的深度遍历  总结: 图是由顶点集合以及顶点之间的关系组成的一种数据结构:G = (V,E),其中顶点集合V={x|x属于某个对象集}是有穷非空集合; E = {(x,y)|x,y属于V}或者E = {x, y|x,y属于V Pa

    2024年02月06日
    浏览(40)
  • 深度优先遍历(邻接矩阵,邻接表)

        深度优先遍历也称为深度优先搜索,简称为DFS。     深度优先遍历的思路是从图中某个顶点V出发,访问此顶点,然后从V的未被访问过的邻接点出发深度优先遍历图,直到图中所有与V路径相通的顶点都被访问到     该遍历过程用到递归。     深度优先遍历用到了一个辅

    2024年02月08日
    浏览(31)
  • 【数据结构】图的创建(邻接矩阵,邻接表)以及深度广度遍历(BFS,DFS)

    图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E),其中: 顶点集合V = {x|x属于某个数据对象集}是有穷非空集合; E = {(x,y)|x,y属于V}或者E = {x, y|x,y属于V Path(x, y)}是顶点间关系的有穷集合,也叫 做边的集合。 完全图:在有n个顶点的无向图中,若有n * (n-1)/2条边,

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包