看了力扣的官方题解,用到广度优先搜索,没有确认过眼神,是一个新的知识点。
------------------------------------------------------广度优先搜索-------------------------------------------------
广度优先搜索BFS(Breadth First Search)也称为宽度优先搜索,它是一种先生成的结点先扩展的策略。
这个知识点是一个图搜索算法。
用python来表视图,需要的是每个节点的相邻节点,有点类似树的结构。
graph={'A':['B','C'],
'B':['A','C','D'],
'C':['A','B','D','F'],
'D':['B','C','E','F'],
'E':['C','D'],
'F':['D']}
这是一个无向图,BFS广度优先算法,将这个图进行分层遍历。给定一个起点,假设是A(存储A),A的相邻节点是B,C(存储A,B,C),然后B的相邻节点是A,C,D,其中A,C已经出现过,不考虑,D没有出现过(存储A,B,C,D)。再来考虑C的相邻节点,A,B,D,F,其中A,B,D出现过,考虑F(存储A,B,C,D,F).再来考虑D的相邻节点B,C,E,F,其中B,C,F出现过,E没有出现过(存储A,B,C,D,F,E)。再来考虑F的相邻节点D,D出现过,(此时存储的还是A,B,C,D,F,E),再来考虑E相邻节点C,D,都出现过。此时(A,B,C,D,F,E)就是使用BFS对这张图的搜索(在这里是遍历)过程。
由这个过程,首先生成一个节点,再查询它的相邻节点,且要判断相邻节点是否出现过,没有出现过的存起来,存起来的节点会根据存储顺序展开(查询它的相邻节点)。这里从A开始查询,展开A,得到B,C,再展开B,....直