Answers:
树只是图的一种受限形式。
树具有方向(父/子关系),并且不包含循环。它们适合有向无环图(或DAG)类别。因此,树是DAG,其限制是一个孩子只能有一个父母。
需要指出的一件事很重要,树不是递归数据结构。由于上述限制,它们不能实现为递归数据结构。但是,也可以使用通常不是递归的任何DAG实现。我首选的Tree实现是集中式地图表示,并且是非递归的。
通常首先搜索图形的广度或深度。树也是如此。
除了解释之外,我更喜欢在图片中显示它。
实时树
现实生活中的图形
是的,地图可以可视化为图形数据结构。
看到他们像这样使生活更轻松。在我们知道每个节点只有一个父节点的地方使用树。但是图可以有多个前任(图通常不使用术语父级)。
在现实世界中,您几乎可以使用图形表示任何东西。例如,我使用了地图。如果您将每个城市都视为一个节点,则可以从多个点到达它。指向该节点的点称为前任点,并将指向该节点的点称为后继点。
电路图,房屋平面图,计算机网络或河流系统是图表的更多示例。可以将许多现实世界中的示例视为图形。
技术图可能像这样
树:
图表:
确保参考以下链接。这些将回答您关于树和图的几乎所有问题。
参考文献:
其他答案很有用,但是它们缺少每个属性:
无向图,图像来源:Wikipedia
有向图,图像来源:维基百科
根据Wikipedia,可以是有向的或无向的(这将适用于图形中的所有边):
例如,如果顶点表示一个聚会上的人,并且两个人握手时在边缘之间存在一条边,则此图是无向的,因为只有当B也与A握手时,任何人A才能与B握手。相反,如果从人A到人B的任何一条边都对应于赞美B的A,则该图是有方向的,因为赞美不一定是往复的。
以上属性有些重叠。具体来说,其余两个属性暗含了最后两个属性。但是,所有这些都值得一提。
在树中,每个节点(根节点除外)恰好有一个前任节点和一个或两个后继节点。可以使用有序,前序,后序和广度优先遍历进行遍历。树是一种无周期的特殊图形,因此称为DAG(有向无环图)。树是一个层次模型。
在图中,每个节点具有一个或多个前任节点和后继节点。通过使用深度优先搜索(DFS)和广度优先搜索(BFS)算法遍历该图。图具有循环,因此它比树更复杂。图是一种网络模型。图有两种:有向图和无向图。
树很明显:它们是由带有子节点的递归数据结构。
映射(又名字典)是键/值对。给地图一个键,它将返回相关的值。
可以使用树来实现地图,希望您不要感到困惑。
更新:将“图形”与“地图”混淆是非常混乱的。
图比树更复杂。树意味着递归的父/子关系。有自然的遍历树的方法:深度优先,宽度优先,级别顺序等。
图在节点之间可以具有单向或双向路径,可以是循环的也可以是非循环的,等等。我认为图更加复杂。
我认为,在任何体面的数据结构文本(例如“算法设计手册”)中进行粗略搜索都会比任何数量的SO答案提供更多更好的信息。我建议您不要走被动路线,而是自己开始做一些研究。
树是图的一种特殊形式,即最小连接图,并且任意两个顶点之间只有一条路径。
在图中,可以有一个以上的路径,即图在节点之间可以具有单向或双向路径(边)
您还可以看到更多详细信息:http : //freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/
一棵树是有向图,使得:
a)去除边缘方向后,它是连接的并且是非循环的
- 您可以删除非循环的假设
- 如果它是有限的,则可以替代地删除它已连接的假设
b)除顶点以外的每个顶点的度数为1
c)根的度数为0
- 如果只有有限多个节点,则可以删除根为indegree 0的假设或除根之外的其他节点为度1的假设。
参考:http : //www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf