为什么我的广度优先遍历打出来是ABCDEFG还没有H

来源:3-7 图的编码实战-图的编码阶段检测

慕UI8082421

2016-11-23 23:45

//广度优先遍历 A B D C F G H E
void CMap::breadthFirstTraverse(int nodeIndex){
cout<<mpNodeArray[nodeIndex].mData <<" ";
mpNodeArray[nodeIndex].mvisited =true;
vector<int>curvec;
curvec.push_back(nodeIndex);
breadthFirstTraverseImp(curvec);
}
void CMap::breadthFirstTraverseImp(vector<int> preVec){
int value=0;
vector<int>curvec;//用来保存这一层所有结点
for(int j=0;j<(int)preVec.size() ;j++){//看上一层有多少结点
for(int i=0;i<miCapacity;i++){
getValueFromMatrix(preVec[i],i,value);
if(value!=0){
if(mpNodeArray[i].mvisited ) continue;
else{
cout<<mpNodeArray[i].mData <<" ";
mpNodeArray[i].mvisited =true;
curvec.push_back(i);
}
}
}
}
if(curvec.size() ==0) return;
else breadthFirstTraverseImp(curvec);
}
这是我的代码,求帮忙。

写回答 关注

1回答

  • 白帽子培钧
    2016-11-26 19:18:42
    已采纳
    getValueFromMatrix(preVec[i],i,value);

    你这行代码写错了。。。不是preVec[i],而是j

数据结构探险之图篇

图是众多实际问题解决方案之源,从基础概念入手掌握图的处理

56337 学习 · 81 问题

查看课程

相似问题