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

时间:2011-09-14 21:49:33

标签: search data-structures map tree

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

11 个答案:

答案 0 :(得分:129)

树只是图表的限制形式。

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

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

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

答案 1 :(得分:90)

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

实时树

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

答案 2 :(得分:3)

在树中,每个节点(根节点除外)恰好具有一个前任节点和一个或两个后继节点。可以使用有序,前序,后序和广度优先遍历进行遍历。树是一种无周期的特殊图形,因此称为DAG(有向无环图)。树是一个层次模型。

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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:1)

树很明显:它们是由带子节点的节点组成的递归数据结构。

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

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

更新:混淆“地图”的“图表”非常令人困惑。

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

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

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

答案 5 :(得分:1)

树基本上是无向图,不包含循环,因此可以说树是图的更受限形式。 然而,树和图在实现各种算法时有不同的应用。 例如,图形可用于模型路线图,而树可用于实现任何分层数据结构。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

  

树是有图的:

     

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

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

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

         

    c)root具有indegree 0

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

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

答案 8 :(得分:0)

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

图表

无向图,image source: Wikipedia

有向图,image source: Wikipedia

  • 由一组顶点(或节点)和一组连接其中一些或全部顶点的边组成
  • 任何边都可以连接尚未通过相同边(在有向图的情况下,在相同方向上)连接的任何两个顶点
  • 不必连接(边缘不必将所有顶点连接在一起):单个图形可以由几组断开连接的顶点组成
  • 可以是有向的或无向的(适用于图形中的所有边)
    根据{{​​3}}:

      

    例如,如果顶点表示一个聚会上的人,并且如果两个人握手,则两个人之间存在一条边,则此图是无向的,因为只有B也握手时,任何人A才能与人B握手。相反,如果从人A到人B的任何一条边都对应于对B的钦佩,则该图是有向的,因为钦佩不一定是往复的。

Wikipedia

  • 一种图形
  • 顶点通常称为“节点”
  • 边缘是有向的,表示“是”的子项(或“是”的父项)关系
  • 每个节点(根节点除外)只有一个父节点(零个或多个子节点)
  • 只有一个“根”节点(如果树上至少有一个节点),这是一个没有父节点的节点
  • 需要连接
  • 是非循环的,表示它没有Image source: Wikipedia:“循环是边和顶点的路径[AKA序列],其中顶点可以从其自身到达”

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

答案 9 :(得分:0)

简单的概念是树没有循环形成及其单向,而图形成循环,在某些情况下是双向的,在另一些情况下是单向的

答案 10 :(得分:-1)

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