邻接矩阵直接找图中的某个元素是否为1即可
邻接表要遍历顶点的边链表
邻接矩阵找行或列
邻接表找顶点对应的边链表
对于有向图的邻接表的入边时候需要将其他顶点的边链表都遍历
此时插入的是与其他顶点都没有连接的顶点
邻接矩阵设置 顶点中的一个变量为布尔型变量用来标记该顶点是否有效,当删除该节点时,只需将该节点所在行和列设置为0即可
邻接表即遍历所有边链表,将有顶点的边都删除,并修改对于的边链表
就是遍历到的第一个
就是遍历到的第二个
即找根节点的孩子节点先
即先访问节点的相邻节点
图遍历可能访问到原先的节点,但树不会,因为它是一直访问孩子节点的
访问后入队,然后出队后再将其相邻且没有访问的节点访问,然后再入队,然后再出队再将其相邻且没有访问的节点访问,如此反复
不同邻接表对应的遍历序列可能不一样
非连通图无法遍历完所有节点
解决方法就是每个节点都广度优先遍历
下面是改进
从结点树和边数考虑(从访问顶点和找各条边考虑)
广度优先遍历过程生成的
即对各个连通分量广度优先遍历即可
有些点BFS不能遍历完所有的结点
依然是所有顶点都深度优先遍历一次
即可能同时调用V次代码(或者说来自递归工作栈)
即每个结点最终都会进入一次深度优先遍历函数,这样才可能最终深度优先遍历所有节点
只不过邻接矩阵中对应节点进入函数后时间复杂度为V
而邻接表为E
邻接表不一样,深度优先遍历序列可能不一样
同样,即将遍历序列的其他边去了即可