Decimos que un árbol binario de números naturales es un árbol "de múltiplos" cuando, para todo nodo que no sea una hoja, los valores de las raíces de los subárboles izquierdo y derecho, y , si no son vacíos, son múltiplos del valor en la raíz de . Consideraremos que un múltiplo de es un natural tal que . Por ejemplo, el siguiente árbol es de múltiplos:
1
|- 2
| |- 4
| '- #
'- 3
|- 9
'- 6
|- 6
'- 12
Haz una función arbre_de_multiples con cabecera:
/**
* @brief Determina si un árbol es "de múltiplos"
*
* @param t Un árbol binario de naturales
*
* @returns `true` si `t` es un árbol de múltiplos
* `false` en caso contrario.
*/
bool arbre_de_multiples(BinTree<int> t);
Los archivos públicos (icono del gatito) contienen:
main.cc |
el programa principal, con la entrada/salida ya hecha |
bintree.hh |
la clase
BinTree<T> |
bintree-io.hh |
la entrada/salida de
BinTree<T> |
bintree-inline.hh |
la entrada/salida "inline" de
BinTree<T> |
Makefile |
para compilar con make |
.vscode |
para compilar y debuggar con VSCode |
Hay que implementar arbre_de_multiples en un
archivo .cc nuevo, compilar, y finalmente
enviar solo el archivo con la función y funciones
auxiliares si son necesarias.
(Esto ya lo hace el programa principal dado). La entrada
comienza con "visual" o "inline" para indicar
el formato de los árboles de entrada. Después viene una secuencia de
árboles en el formato indicado.
(Esto también lo hace el programa principal dado). La salida
son los strings resultantes de llamar a la función
arbre_de_multiples, un resultado por línea.
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