Donat un arbre binari, les seves fulles són els subarbres que tenen les dues branques left i right buides. A més, en aquest problema considerarem exclusivament arbres binaris que no tenen subarbres amb només una branca buida. És a dir, en aquest tipus d’arbres un subarbre és: o bé una fulla, o bé les dues branques són subarbres no buits.
Implementa la funció tree_all_leaves_equal, que determina si, en un arbre binari d’enters, totes les fulles tenen el mateix valor:
/** * @brief Determina si totes les fulles d'un arbre tenen * el mateix valor. * * @param t Un arbre binari d'enters * @returns `true` si totes les fulles són iguals, * `false` altrament. * * @pre En tots els subarbres de `t` es compleix: o bé són * fulles, o bé les dues branques són no buides. */ bool tree_all_leaves_equal(BinTree<int> t);
Observació
Els fitxers públics (icona del gatet) contenen:
main.cc | el programa principal, amb la entrada/sortida feta |
bintree.hh | la classe BinTree<T> |
bintree-io.hh | l’entrada/sortida de BinTree<T> |
bintree-inline.hh | l’entrada/sortida "inline" de BinTree<T> |
Makefile | per compilar amb make còmodament |
.vscode | carpeta per compilar i debuggar amb VSCode |
Cal implementar tree_all_leaves_equal en un fitxer .cc nou, compilar, i finalment enviar només el fitxer amb la funció.
Entrada
L’entrada comença amb "visual" o "inline" per indicar el format dels arbres d’entrada. Després ve una seqüència d’arbres en el format indicat. (D’això s’encarrega el programa principal).
Sortida
La sortida són els strings resultants de cridar la funció tree_all_leaves_equal, un resultat per línia. (D’això també s’encarrega el programa principal.)
Input
visual
8
-5
|-- 3
'-- 1
1
|-- 2
'-- 2
6
|-- 0
'-- 1
|-- 0
'-- 2
3
|-- 2
| |-- 4
| '-- 4
'-- 4
Output
true false true false true
Input
inline 1(7(3,3),10(7,3)) 5(2(6,2(6,8)),9(6,3(6,6))) 3(2,2) 6(7(5,7(5,5)),3(5(5,5),5)) 8(7,4(8,8)) 6(4(1(9,9),9),4(9,6(9,9))) 6(5(7,7),7) 6(4(8,8),8) 1(1(2,2),2) 5(2,5)
Output
false false true true false true true true true false