Arbre binari de graus de desequilibri T47104


Statement
 

pdf   zip   tar

thehtml

Considereu un arbre binari t de qualsevol tipus. Donat qualsevol subarbre s no buit de t, diem que el grau de desequilibri de s és la diferència entre l’alçada del seu fill esquerre i la del seu fill dret (pot ser positiva, zero o negativa).

Diem que l’arbre de graus de desequilibri de t és un altre arbre binari D amb la mateixa forma que t, on el valor de cada node n és el grau de desequilibri del subarbre de t amb l’arrel a n.

Un exemple, amb l’arbre t a l’esquerra, i l’arbre D de graus de desequilibri a la dreta:

t = 7                  D = 2
    |-- 1                  |-- -1
    |   |-- #              |   |-- #
    |   '-- 8              |   '-- 0
    '-- 6                  '-- -2
        |-- 3                  |-- -2
        |   |-- #              |   |-- #
        |   '-- 5              |   '-- 0
        |       |-- 2          |       |-- 0
        |       '-- 4          |       '-- 0
        '-- 10                 '-- 0

Implementeu la funció:

/**
 * @brief Retorna l'arbre de graus de desequilibri de `t`.
 *
 * @param t L'arbre binari original.
 * @returns L'arbre de graus de desequilibri de `t`.
 */
BinTree<int> bintree_of_height_diffs(BinTree<int> t);

Observació

Els fitxers públics (icona del gatet) són: la classe BinTree (fitxer bintree.hh), l’entrada/sortida de BinTree (bintree-io.hh) i el programa principal. També hi ha un Makefile i el directori .vscode que té la configuració per compilar i debuggar amb VSCode.

Has d’implementar bintree_of_height_diffs en un fitxer .cc nou, compilar (està preparat per poder compilar i debuggar amb VSCode), i finalment enviar només el fitxer amb la funció.

Entrada

Cada cas consisteix en una representació textual d’un arbre d’enters. (Aquesta lectura ja la fa el programa principal.)

Sortida

Per a cada cas, la sortida conté la representació textual de l’arbre resultant d’aplicar la funció bintree_of_height_diffs. (La sortida també la fa el programa principal.)

Public test cases
  • Input

    visual
    3
    
    5
    |-- #
    '-- 2
    
    4
    |-- 6
    '-- 2
    
    3
    |-- 4
    '-- 2
        |-- 1
        '-- #
    
    5
    |-- 1
    |   |-- 2
    |   |   |-- #
    |   |   '-- 3
    |   '-- 4
    '-- 6
    
    5
    |-- #
    '-- 4
        |-- #
        '-- 3
            |-- #
            '-- 2
                |-- #
                '-- 1
    
    

    Output

    0
    
    -1
    |-- #
    '-- 0
    
    0
    |-- 0
    '-- 0
    
    -1
    |-- 0
    '-- 1
        |-- 0
        '-- #
    
    2
    |-- 1
    |   |-- -1
    |   |   |-- #
    |   |   '-- 0
    |   '-- 0
    '-- 0
    
    -4
    |-- #
    '-- -3
        |-- #
        '-- -2
            |-- #
            '-- -1
                |-- #
                '-- 0
    
    
  • Information
    Author
    PRO2
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++