为了账号安全,请及时绑定邮箱和手机立即绑定

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

//广度优先遍历 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 回答

getValueFromMatrix(preVec[i],i,value);

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

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信