Árbol binario con los valores de los nodos internos iguales X93918


Statement
 

pdf   zip   tar

Dado un árbol binario, sus hojas son los subárboles que tienen las dos ramas left y right vacías. Los nodos internos son todos aquellos nodos que no son hojas.

Implementa la función tree_internal_nodes_equal, que determina si, en un árbol binario de enteros, los valores de los nodos internos son todos iguales:

/**
 * @brief Determina si todos los valores de los nodos internos son iguales
 *
 * @param  t  Un árbol binario de enteros
 * @returns  `true` si todos los valores de los nodos internos son iguales,
 *           `false` en caso contrario.
 */
bool tree_internal_nodes_equal(BinTree<int> t);

Observación

Los ficheros públicos (icono del gatito) contienen:

main.cc el programa principal, con la entrada/salida 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 cómodamente
.vscode carpeta para compilar y depurar con VSCode

Hay que implementar tree_internal_nodes_equal en un fichero .cc nuevo, compilar, y finalmente enviar solo el fichero con la función.

Entrada

La entrada empieza con "visual" o "inline" para indicar el formato de los árboles de entrada. Después viene una secuencia de árboles en el formato indicado. (De esto se encarga el programa principal).

Salida

Para cada árbol, la salida es true si todos los valores de los nodos internos son iguales, o false en caso contrario. (De esto se encarga 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
    Spanish
    Translator
    Pau Fernández
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++