Haskell — Diàmetre d’Arbre Binari

Donat un arbre binari a, volem obtenir el seu diàmetre.

El diàmetre d’un arbre binari es defineix com el nombre d’arestes del
camí més llarg entre dos nodes qualsevol. El diàmetre de l’arbre buit és
0. És irrellevant el contingut (el valor) dels nodes, aquesta propietat
és una propietat exclusivament de l’estructura de l’arbre.

Per exemple:

[image]

Escriviu un programa que llegeixi una seqüència d’arbres binaris (donats
per un recorregut en preordre amb -1 per a arbres buits) i escrigui el
seu diàmetre. Per fer-ho, descarregueu-vos el fitxer code.hs que conté
l’esquelet del programa.

El arbres binaris de naturals venen donats per aquest tipus:

    data Arbin = Buit | Node Int Arbin Arbin    deriving Show

La funció diametre té tipus Arbin -> (Int, Int). Fixeu-vos que cal
retornar el diàmetre de l’arbre i la seva alçada (nombre de nodes entre
l’arrel i alguna de les fulles més profundes, ambdós inclosos). Amb
aquesta informació de cada fill n’hi ha prou per poder calcular el
diàmetre i l’alçada de l’arbre. Així la implementació resulta molt més
senzilla i eficient.

Un exemple:

diametre (Node 1 (Node 2 Buit Buit) (Node 3 Buit Buit))

ha de retornar (2,2)

Un altre exemple:

diametre (Node 1 Buit (Node 2 (Node 3 (Node 5 Buit Buit) Buit) (Node 4 Buit (Node 6 Buit Buit))))

ha de retornar (4,4)

La funció convertirEnArbin és de tipus [Int] -> Arbin. Per exemple,

convertirEnArbin [2, 3, -1, -1, -1]

ha de retornar

Node 2 (Node 3 Buit Buit) Buit

Un altre exemple:

convertirEnArbin [11, 2, 3, -1, -1, 10, -1, -1, 3, 5, -1, -1, 4, -1, -1]

ha de retornar

Node 11 (Node 2 (Node 3 Buit Buit) (Node 10 Buit Buit)) (Node 3 (Node 5 Buit Buit) (Node 4 Buit Buit))

Entrada

L’entrada és una seqüència d’arbres binaris, donats pel seu recorregut
en preordre i amb la marca −1 per indicar els arbres buits. Hi ha un
arbre per línia.

Sortida

Per cada arbre de l’entrada, el programa ha d’escriure el seu diàmetre.

Observacions

La correcció valorarà l’eficiència, l’elegància, la senzillesa i la
qualitat general de la solució lliurada.

Informació del problema

Autoria: Jordi Delgado

Generació: 2026-03-22T17:51:22.817Z

© Jutge.org, 2006–2026.
https://jutge.org
