图的表示

邻接表的缺点在于不能直接确定一条边是否存在,只能遍历。

邻接矩阵缺点在于占用空间比较多。

广度优先搜索

每个结点再添加一个颜色域,取值分别为白色,灰色,黑色。

还要添加一个父母域,保存父结点,一个距离开始结点距离的域。

初始化的时候是白色,如果结点的被发现了,那它就是灰色,如果它所有的邻接顶点都被发现了,那它就是黑色。

选取一个顶点为开始结点,然后遍历其邻接表,把相邻的结点置为灰色,距离加一,然后放入队列。

队列里面的结点都是被发现过的,灰色的,也就说等待进一步遍历的。