我有一棵无向的树,我要标记其顶点。叶节点应标记为一个。然后,假设叶子被去除了。在剩下的树中,叶子应标记为两片。该过程将以显而易见的方式继续进行,直到所有顶点都具有标签为止。我这样做的原因是我想将顶点存储在队列中,并“先离开”浏览它们。有没有简单的方法可以执行此时间?
我可以通过在每个步骤上进行BFS来解决该问题。但是在最坏的情况下,在我经过每个顶点的每一步中,都精确地移去两片叶子并将它们排队。我相信这需要二次时间。
另一个想法是首先找到所有叶子,然后对每个叶子进行BFS。这没有给我想要的解决方案。例如,考虑下图所示的一种“皇冠图”。显示了所需的解决方案,但是从每个叶子启动BFS只会导致使用两个标签。
理想地,线性时间算法也将易于解释和实现。