【发布时间】:2017-01-13 12:08:16
【问题描述】:
给定一个二叉树的表示,它最多可以有 n 个节点:
typedef struct node
{
int info,n;
struct node *left,*right;
}tree_node;
从最多有 n 个节点的二叉树构造一个无向图。
图形表示为结构:
typedef struct
{
int n;
tree_node *nodes[];
int adjacency_m[][];
}graph;
我们可以使用 Prim、Kruskal 或 DFS 等算法从图中得到一棵树。
问题:有没有一种算法可以从二叉树创建图? 例如,如果以 In-order 方式遍历二叉树,那么如何从中创建无向图?
【问题讨论】:
-
无论如何都不是先验结果图。
-
据我所知 - 树就是图。
-
@ufo 树是抽象级别的图。您的区别在于使用的具体数据结构,但您没有提供目标图数据结构。您可以通过任何方式完全遍历树,将树结构转换为图结构,但效率取决于所涉及的实际数据结构。
-
@ufo 树是一个有向无环图,其特点是有一个根节点,并且从根节点到叶节点的每条路径都是唯一的。您已经有了邻接信息,它们在您的代码中分别称为
left和right:它们是节点可能的 2 个传出边。 -
每棵树都是一个图(但不是每一个图都是一棵树)。只需制作树的副本,您就会得到一个图表。
标签: c algorithm binary-tree undirected-graph