Arbre de Múltiples T56798


Statement
 

pdf   zip   tar

Diem que un arbre binari de nombres naturals TT é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, EE i DD, si no són buits, són multiples del valor a l’arrel de TT. Considerarem que un múltiple de nn és un natural m=nkm = nk tal que k>=1k >= 1. 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);

Observació

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.

Entrada

(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.

Sortida

(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.

Public test cases
  • 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
    
  • Information
    Author
    Mª Lluïsa Bonet i Pau Fernández
    Language
    Catalan
    Translator
    Mª Lluïsa Bonet i Pau Fernández
    Original language
    Spanish
    Other languages
    Spanish
    Official solutions
    C++
    User solutions
    C++