咨询递归DFS R代码示例所假设的图数据结构
递归DFS R代码对应的数据结构排查
那个递归DFS代码假设的是数值索引匹配节点编号的邻接表,你之前的实现问题出在节点标识类型和列表索引逻辑上,调整后就能正常运行:
正确的数据结构示例(节点从0开始)
如果原DFS函数支持0号节点,用无命名的列表,列表的索引对应节点编号:
graph <- list( c(1, 2), # 节点0的邻接节点 c(3, 4), # 节点1的邻接节点 c(5, 6), # 节点2的邻接节点 c(), # 节点3的邻接节点 c(), # 节点4的邻接节点 c(), # 节点5的邻接节点 c() # 节点6的邻接节点 )
适配R默认索引的版本(节点从1开始)
由于R列表默认从1索引,多数基础DFS实现会用1起始的节点编号,对应结构如下:
graph <- list( c(2, 3), # 节点1的邻接节点 c(4, 5), # 节点2的邻接节点 c(6, 7), # 节点3的邻接节点 c(), c(), c(), c() )
问题原因
你之前用字符串作为节点键名,但原DFS函数大概率是通过列表的位置索引访问邻接节点,而非键名匹配,导致字符命名的列表无法被正确遍历。如果要保留字符型节点,需要修改DFS函数中的节点查找逻辑,确保用键名而非索引访问列表元素。
内容的提问来源于stack exchange,提问作者Neal Oden
相关产品推荐
相关产品推荐

