数据结构Tree和Graph有什么区别?

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

树只是Graph的一个限制forms。

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

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

graphics通常首先search呼吸或深度search。 树同样适用。

我不想解释,而是喜欢用照片来展示。

一棵树实时

一棵树实时

在现实生活中使用的图表

一个实时图

是的,一个地图可以被视为一个graphics数据结构。

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

在现实世界中,您可以使用graphics表示几乎任何东西。 例如,我使用了一张地图。 如果你把每个城市当作一个节点,可以从多个angular度来达成。 导致这个节点的点被称为前辈,这个节点将导致的点被称为后继者。

电路图,房屋计划,计算机networking或河stream系统等是几个图表的例子。 许多现实世界的例子可以被认为是图表。

技术图可能是这样的

树:

在这里输入图像说明

图:

在这里输入图像说明

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

参考文献

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

是图的特殊forms,即最小连通图,任何两个顶点之间只有一条path。

在图中 ,可以有多于一条path,即图可以在节点之间具有单向或双向path(边)

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

树是显而易见的:它们是recursion的数据结构,包含有子节点的节点。

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

地图可以用树来实现,我希望你不要觉得混乱。

更新:混淆“图”为“地图”是非常混乱。

图比树更复杂。 树意味着recursion的父母/子女关系。 有一种自然的方法可以遍历树:深度优先,宽度优先,水平sorting等。

图可以在节点之间具有单向或双向path,可以是循环的或非循环的等。我会考虑图更复杂。

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

在math中,graphics是一组对象的表示,其中一些对象由链接连接。 相互连接的对象由称为顶点的math抽象表示,连接某些顶点对的连接称为边。[1] 通常情况下,graphics以graphicsforms描述为顶点的一组点,由边或线连接。 graphics是离散math研究的对象之一。

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