Tengo un árbol no dirigido cuyos vértices quiero etiquetar. Los nodos de la hoja deben etiquetarse como uno. Luego, suponga que las hojas fueron removidas. En el árbol que queda, las hojas deben etiquetarse como dos. Este proceso continúa de la manera obvia hasta que todos los vértices tengan una etiqueta. La razón por la que hago esto es porque quiero almacenar los vértices en una cola y pasar por ellos "las hojas primero". ¿Hay una manera fácil de hacer este tiempo ?
Puedo resolver el problema haciendo un BFS en cada paso. Pero en el peor de los casos, en cada paso que paso por cada vértice, elimino exactamente dos hojas y las pongo en cola. Creo que esto lleva tiempo cuadrático.
Otra idea era encontrar primero todas las hojas y luego hacer un BFS de cada hoja. Esto no me da la solución deseada. Por ejemplo, considere un tipo de "gráfico de corona" como en la figura a continuación. Se muestra la solución deseada, pero el lanzamiento de un BFS desde cada hoja daría como resultado solo dos etiquetas utilizadas.
Idealmente, el algoritmo de tiempo lineal también sería fácil de explicar e implementar.