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

深度优先遍历解答

void CMap::depthFirstTraverse(int nodeIndex)
{int val=1;
cout<<m_pNodeArr[nodeIndex].m_cData<<" ";
m_pNodeArr[nodeIndex].m_bIsVisited=true;
for (int i=0; i<m_iCapacity;i++)
{
if(getValFromMatrix(nodeIndex,i, &val))
{
if (val==1 && m_pNode[i].m_bIsVisited==false)
{
depthFirstTraverse(i);
}
}
}
}

首先要知道nodeIndex 指的是行数,也就是row(0~capacity)。这一点从

getValFromMatrix(nodeIndex,i, &val)函数的声明可以看出来。且初始的nodeIndex值应该为0,从A节点开始寻找其有连接的点,
再从其有连接的点找其他有连接的点,依次下去,找到后就打印,并置为true(已经被遍历)。
其次,还要对getValFromMatrix(nodeIndex,i, &val)函数的返回作判断,返回为true则表示引用val的值发生了赋值(改变),
从而能知晓该节点是否与i有连接。老师呢,没有对getValFromMatrix(nodeIndex,i, &val)函数
的返回作判断,这一点大家要注意。同时也要注意,val必须要引用传值,这样在getValFromMatrix(nodeIndex,i, &val)函数执行
完后,val的值才会反映出是否有连接(即1 有,0 无)
最后,可以把几个判断条件并列,像在下所写的上述代码那样,可以省去一些工作


正在回答

1 回答

111

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

举报

0/150
提交
取消

深度优先遍历解答

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