Diem que un arbre binari de nombres naturals és un arbre "de múltiples" quan, per a tot node que no sigui una fulla, els valors de les arrels dels subarbres esquerre i dret, i , si no són buits, són multiples del valor a l’arrel de . Considerarem que un múltiple de és un natural tal que . Per exemple, el següent arbre és de múltiples:
1
|- 2
| |- 4
| '- #
'- 3
|- 9
'- 6
|- 6
'- 12
Fes una funció arbre_de_multiples amb capçalera:
/**
* @brief Determina si un arbre és "de múltiples"
*
* @param t Un arbre binari de naturals
*
* @returns `true` si `t` és un arbre de múltiples
* `false` altrament.
*/
bool arbre_de_multiples(BinTree<int> t);
Els fitxers públics (icona del gatet) contenen:
main.cc |
el programa principal, amb la entrada/sortida ja 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 |
.vscode |
per compilar i debuggar amb VSCode |
Cal implementar arbre_de_multiples en un fitxer
.cc nou, compilar, i finalment enviar
només el fitxer amb la funció i funcions auxiliars si són
necessàries.
(Això ja ho fa el programa principal donat). 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.
(Això també ho fa el programa principal donat). La sortida
són els strings resultants de cridar la funció
arbre_de_multiples, un resultat per línia.
Input
visual
5
1
|-- 2
'-- 1
1
|-- 3
'-- 5
2
|-- 3
'-- 1
1
|-- 2
'-- 3
3
|-- 3
'-- 1
|-- 3
'-- 2
2
|-- 6
| |-- 30
| '-- 12
'-- 4
Output
si si si no si no si
Input
inline 5 1(2,1) 1(3,) 2(3,1) 1(2,3) 3(3,1(3,2)) 2(6(30,12),4)
Output
si si si no si no si