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 string
s 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