三种类型的树遍历是有序,前序和后序。 第四种较少使用的遍历是级别顺序遍历。在级别顺序遍历中,深度为“ d”的所有节点都在深度为d + 1的任何节点之前进行处理。级别顺序遍历与其他遍历不同,因为它不是递归完成的;使用队列,而不是隐式的递归堆栈。
三种类型的树遍历是有序,前序和后序。
第四种较少使用的遍历是级别顺序遍历。在级别顺序遍历中,深度为“ d”的所有节点都在深度为d + 1的任何节点之前进行处理。级别顺序遍历与其他遍历不同,因为它不是递归完成的;使用队列,而不是隐式的递归堆栈。
我对以上文本片段的疑问是
谢谢!
级别顺序遍历实际上是BFS,它本质上不是递归的。它使用队列而不是堆栈来保存应打开的下一个顶点。发生这种情况的原因是,您希望以FIFO顺序而不是通过递归获得的LIFO顺序打开节点
正如我提到的,级别顺序实际上是一个BFS,其[BFS]伪代码[取自维基百科]为:
1 procedure BFS(Graph,source): 2 create a queue Q 3 enqueue source onto Q 4 mark source 5 while Q is not empty: 6 dequeue an item from Q into v 7 for each edge e incident on v in Graph: 8 let w be the other end of e 9 if w is not marked: 10 mark w 11 enqueue w onto Q
(*)在树中,不需要标记顶点,因为您无法通过2条不同的路径到达同一节点。