我看到一个面试问题,其中图形结构被定义为:
struct Node{
vector<Node*> neighbors;
}
我觉得这很不寻常,或者可能是一个错误,因为没有什么可以真正区分节点间的差异。我的推理正确吗,还是说一个图可以只用邻居向量来定义?我想我们必须像这样:
template<typename T>
struct Node{
T value;
vector<Node*> neighbors;
}
这对我来说更直观。
有没有什么“典型”的方法来定义图?例如,对于二叉树,我们至少需要一个值,加上左右指针。对于链表,我们至少需要一个值和一个下一个指针等。
T value
,则无需添加它(例如计算连通组分)。 - Jarod42