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).
Per a cada arbre, la sortida és true si totes les fulles
tenen el mateix valor, o false altrament. (D’això
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