為什么我的廣度優先遍歷打出來是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);
}
這是我的代碼,求幫忙。
2016-11-26
你這行代碼寫錯了。。。不是preVec[i],而是j