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);
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ó.
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).
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