数据结构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系统等是几个图表的例子。 许多现实世界的例子可以被认为是图表。
技术图可能是这样的
树:
图:
请务必参考下面的链接。 这些将回答几乎所有关于树和图的问题。
参考文献
树是图的特殊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模型。