1. 广度优先搜索(Breadth-First-Search)

百度百科: 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。 Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。 其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。 换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。

  • 一般用来遍历树状结构
  • 一般以层为主,从根节点一层一层的往下遍历
  • 看起来就像越来越宽

层序遍历是一种广度优先的遍历方式,先遍历根节点这一层,再遍历第二层,依次这样从上到下,从左到右。 利用队列先入先出的特性。根节点入队列,开始循环判断,条件是队列是否为空,先处理当前节点,然后出队列(此时队列为空),看看当前节点有没有左右子节点, 如果有入队列(此时队列不为空,进入下一层循环)以此类推。

代码实现:

func (b *BST) LevelOrder() {
    queue := LoopQueue.New(30)
    queue.Enqueue(b.root)
    for ! queue.IsEmpty() {
        cur := queue.Dequeue().(*Node)
        fmt.Println(cur.e)

        if cur.left != nil {
            queue.Enqueue(cur.left)
        }
        if cur.right != nil {
            queue.Enqueue(cur.right)
        }
    }
}

results matching ""

    No results matching ""