数据结构树和图之间有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构树和图之间有什么区别?相关的知识,希望对你有一定的参考价值。

从学术上讲,数据结构树和图之间的本质区别是什么?那么基于树的搜索和基于图的搜索呢?

答案

树只是图形的限制形式。

树有方向(父/子关系),不包含周期。它们适用于有向无环图(或DAG)类别。所以树木是DAG,其限制是孩子只能拥有一个父母。

有一点值得指出,树不是递归数据结构。由于上述限制,它们不能实现为递归数据结构。但是也可以使用通常不是递归的任何DAG实现。我首选的Tree实现是一个集中的地图表示,并且不是递归的。

图形通常是搜索宽度优先或深度优先。这同样适用于Tree。

另一答案

而不是解释我更喜欢在图片中显示它。

一棵树实时

现实生活中使用的图表

是的,地图可以显示为图形数据结构。

像这样看待他们会让生活更轻松。树在我们知道每个节点只有一个父节点的地方使用。但是图形可以有多个前辈(术语父级通常不用于图形)。

在现实世界中,您几乎可以使用图形表示任何内容。例如,我使用了地图。如果您将每个城市视为一个节点,则可以从多个点进行访问。导致此节点的点称为前置节点,此节点将导致的点称为后继节点。

电路图,房屋计划,计算机网络或河流系统是图表的更多例子。许多现实世界的例子可以被视为图表。

技术图可能是这样的

树:

图表:

请务必参考以下链接。这些将回答几乎所有关于树木和图表的问题。

参考文献:

  1. http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-17-trees-and-graphs/#_Toc362296541
  2. http://www.community-of-knowledge.de/beitrag/data-trees-as-a-means-of-presenting-complex-data-analysis/
  3. 维基百科
另一答案

在树中,每个节点(根节点除外)只有一个前驱节点和一个或两个后继节点。可以使用In-order,Pre-order,Post-order和Breadth First遍历来遍历它。树是一种没有周期的特殊图形,因此被称为DAG(有向无环图)。树是一种分层模型。

在图中,每个节点具有一个或多个前驱节点和后继节点。使用深度优先搜索(DFS)和广度优先搜索(BFS)算法遍历该图。图有循环因此它比树更复杂。图是一种网络模型。有两种图形:有向图和无向图。

另一答案

树是图的特殊形式,即最小连通图并且在任何两个顶点之间仅具有一条路径。

在图中,可以存在多于一个路径,即图可以在节点之间具有单向或双向路径(边缘)

您还可以看到更多细节:http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/

另一答案

树是显而易见的:它们是由具有子节点的节点组成的递归数据结构。

地图(又名字典)是键/值对。给地图一个键,它将返回相关的值。

地图可以使用树实现,我希望你不要发现这种混乱。

更新:混淆“地图”的“图形”非常混乱。

图表比树木更复杂。树意味着递归的父/子关系。有一些自然的遍历树的方法:深度优先,广度优先,水平顺序等。

图形可以在节点之间具有单向或双向路径,可以是循环的或非循环的等等。我认为图形更复杂。

我认为粗略搜索任何体面的数据结构文本(例如“算法设计手册”)将提供比任何数量的SO答案更多和更好的信息。我建议你不要采取被动路线,并开始为自己做一些研究。

另一答案

其他答案很有用,但它们缺少每个答案的属性:

图形

无向图,image source: Wikipedia

有向图,image source: Wikipedia

  • 由一组顶点(或节点)和一组连接其中一些或全部的边组成
  • 任何边都可以连接任何两个尚未通过相同边连接的顶点(在有向图的情况下,方向相同)
  • 不必连接(边不必将所有顶点连接在一起):单个图可以包含几个不连续的顶点集
  • 可以是定向的或不定向的(这将适用于图中的所有边) 根据Wikipedia: 例如,如果顶点代表派对上的人,并且如果他们握手,则两个人之间存在边缘,则该图是无向的,因为任何人A只有在B也与A握手时才能与人握手。相反,如果从人A到人B的任何边缘对应于A欣赏B,那么该图是指向的,因为钦佩不一定是往复的。

Image source: Wikipedia

  • 一种图形
  • 顶点通常称为“节点”
  • 边缘是指向并代表“是孩子的”(或“是父母的”)关系
  • 每个节点(根节点除外)只有一个父节点(以及零个或多个子节点)
  • 只有一个“根”节点(如果树至少有一个节点),这是一个没有父节点的节点
  • 必须连接
  • 是非循环的,意味着它没有cycles:“一个循环是边缘和顶点的路径[AKA序列],其中顶点可以从它自己到达”

上述属性有一些重叠。具体来说,其余属性隐含了最后两个属性。但是,所有这些都值得注意。

另一答案

树中有一个根节点,一个子节点只有一个父节点。但是,没有根节点的概念。另一个区别是,树是层次模型,而图是网络模型。

另一答案

树是有图的:

a)边缘方向被移除,它是连接的和非循环的

  1. 您可以删除它是非循环的假设
  2. 如果它是有限的,您可以选择删除它已连接的假设

b)每个顶点,但一个根,根,具有indegree 1

c)root具有indecree 0

  1. 如果只有有限数量的节点,则可以删除根具有indegree 0的假设,或者假设除根之外的节点具有1度

参考:http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf

另一答案

在数学中,图形是一组对象的表示,其中一些对象通过链接连接。互连对象由称为顶点的数学抽象表示,连接一些顶点对的链接称为边。[1]通常,图形以图解形式描绘为顶点的一组点,由边线的线或曲线连接。图是离散数学研究的对象之一。

以上是关于数据结构树和图之间有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

树和图的区别

数据结构期末 树和图

数据结构与算法:图

数据结构与算法:图

算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS

数据结构-树&图树和图的性质