Arbre binari amb els valors dels nodes interns iguals X93918


Statement
 

pdf   zip   tar

Donat un arbre binari, les seves fulles són els subarbres que tenen les dues branques left i right buides. Els nodes interns són tots aquells nodes que no són fulles.

Implementa la funció tree_internal_nodes_equal, que determina si, en un arbre binari d’enters, els valors dels nodes interns són tots iguals:

/**
 * @brief Determina si tots els valors dels nodes interns són iguals
 * 
 * @param  t  Un arbre binari d'enters
 * @returns  `true` si tots els valors dels nodes interns són iguals, 
 *           `false` altrament.
 */
bool tree_internal_nodes_equal(BinTree<int> t);

Observació

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_internal_nodes_equal en un fitxer .cc nou, compilar, i finalment enviar només el fitxer amb la funció.

Entrada

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

Sortida

Per a cada arbre, la sortida és true si tots els valors dels nodes interns són iguals, o false altrament. (D’això s’encarrega el programa principal.)

Public test cases
  • Input

    visual
    
    #
    
    8
    
    1
    |-- #
    '-- 3
    
    5
    |-- 5
    |   |-- 1
    |   '-- #
    '-- 3
    
    7
    |-- 7
    |   |-- #
    |   '-- 1
    '-- 5
        |-- 2
        '-- 3
    
    6
    |-- #
    '-- 6
        |-- #
        '-- 1
    
    7
    |-- 9
    |   |-- #
    |   '-- 9
    |       |-- 5
    |       '-- 5
    '-- 9
        |-- 3
        '-- 9
            |-- 10
            '-- #
    
            

    Output

    true
    true
    true
    true
    false
    true
    false
    
  • Input

    inline
    8(8(5,),8(5,))
    9(,9(9(,1),9(,3)))
    4(4(,2),4(4,))
    10(10(6,),10(,9))
    6(6(4,),6(,0))
    1(1(1(,5),1(,8)),1(1(,7),1(3,)))
    9(4(4(,8),4(7,)),)
    9(9(6,),2(,7))
    6(6(,6),2(3,))
    3(3(3(,9),3(,4)),3(3(,9),9(,9)))
    

    Output

    true
    true
    true
    true
    true
    true
    false
    false
    false
    false
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Other languages
    Spanish
    Official solutions
    C++
    User solutions
    C++