En teoría de grafos, un código Prüfer es una secuencia única de enteros que denota un árbol específico.
Puede encontrar el código Prüfer de un árbol con el siguiente algoritmo tomado de Wikipedia:
Considere un árbol etiquetado T con vértices
{1, 2, ..., n}
. En el paso i , retire la hoja con la etiqueta más pequeña y configure el elemento i de la secuencia de Prüfer para que sea la etiqueta del vecino de esta hoja.
(Tenga en cuenta que, dado que es una hoja, solo tendrá un vecino).
Debe detener la iteración cuando solo quedan dos vértices en el gráfico.
Tarea
Dado un árbol etiquetado como entrada, salida, su código Prüfer. Puede tomar aportes de cualquier manera razonable. Como una matriz de adyacencia o la representación gráfica de sus idiomas. ( No puede tomar la entrada como un código Prüfer ).
Este es el código de golf, por lo que debe intentar minimizar los bytes en su fuente.
Casos de prueba
Aquí hay algunas entradas en ASCII con sus salidas a continuación. No necesita admitir entradas ASCII como esta.
3
|
1---2---4---6
|
5
{2,2,2,4}
1---4---3
|
5---2---6---7
|
8
{4,4,2,6,2,5}
5---1---4 6
| |
2---7---3
{1,1,2,7,3}
[[2,1],[2,3],[2,5],[2,4,6]]
para el primer caso? (es decir, cada rama)