it-swarm.cn

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

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

117
user918304

树只是图形的限制形式。

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

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

图形通常首先是搜索呼吸或首先是深度搜索。这同样适用于Tree。

129
user785287

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

实时树

A tree in real time

现实生活中使用的图表

A real time graph

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

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

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

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

技术图可能是这样的

树:

enter image description here

图表:

enter image description here

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

参考文献:

  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. 维基百科

90
mk..

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

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

3
user10514540

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

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

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

2
Bipon Biswas

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

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

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

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

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

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

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

1
duffymo

树是有图的:

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

0
BPL

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

图形

 

无向图, 图像源:维基百科

 

有向图, 图像源:维基百科

  • 由一组顶点(或节点)和一组连接其中一些或全部的边组成
  • 任何边可以连接任何两个尚未通过相同边连接的顶点(在有向图的情况下,在同一方向上)
  • 不必连接(边不必将所有顶点连接在一起):单个图可以包含几个不连续的顶点集
  • 可以是定向的或不定向的(这将适用于图中的所有边)
    根据 维基百科

    例如,如果顶点代表派对上的人,并且如果他们握手,则两个人之间存在边缘,则该图表是无向的,因为任何人A只有在B也与A握手时才能与人握手。相反,如果从人A到人B的任何边对应于A欣赏B,那么该图是指向的,因为赞美不一定是往复的。

 

图像来源:维基百科

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

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

0
Dukeling

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

0
Rajan Kumar Kharel