我刚开始学习图论,有些困惑的是为什么我们需要使用外部数据结构(如矩阵或列表)来存储图中哪些顶点与其他顶点相连。
为什么不能像决策树中的节点一样,每个顶点都持有指向其相邻顶点的引用?在我看来,这似乎更加直观。
谢谢!
我刚开始学习图论,有些困惑的是为什么我们需要使用外部数据结构(如矩阵或列表)来存储图中哪些顶点与其他顶点相连。
为什么不能像决策树中的节点一样,每个顶点都持有指向其相邻顶点的引用?在我看来,这似乎更加直观。
谢谢!
邻接矩阵或邻接表并非必须。还有其他选择。如果您使用C ++,请使用vector和map。如果顶点/节点从0-N编号,则不需要map,而是可以使用vector。 例如:
vector < vector < int > > graph; // while vertex/node are numbered from 0-N.
map < int, vector<int> > graph; // when vertex/node can be any number
graph[i].push_back(x); // insertion of node x in i'th list.
遍历第 i 个列表将显示与节点 i 相连的节点。