Camino preferente de un árbol X38658


Statement
 

pdf   zip   tar

html

Recordad que una hoja de un árbol es un nodo sin ningún sucesor. Un camino dentro de un árbol es una sucesión de nodos que van de la raíz a una hoja.

Dado un árbol binario a de elementos de cualquier tipo, definimos el camino preferente del árbol a de la siguiente manera: si a esta vacío entonces el camino preferente de a también esta vacío; en caso contrario, el camino preferente de a lo forman el elemento raíz de a seguido del camino preferente del hijo de a que tenga más elementos. Si a tiene dos hijos no vacíos con el mismo numero de elementos se elige el camino preferente del hijo izquierdo.

Queremos una operación que nos permita saber cual es el camino preferente de un árbol de enteros, representando este camino con una pila de enteros, ordenada de forma que el primer elemento del camino (si existe) este en la cima de la pila. Utilizad la siguiente especificación:

void cami_preferent(Arbre<int> &a, stack<int> &c) /* Pre: a=A, c esta vacia */ /* Post: c contiene el camino preferente de A; si no esta vacia, el primer elemento del camino esta en la cima de c */

Ejemplo: considerad los dos árboles siguientes

a = 7 b = 7 / \ / \ 6 -2 6 -2 / \ / \ / \ / \ -2 -3 -1 3 -1 3 8 -3 / \ \ \ / \ / \ 1 8 -5 10 2 9 5 4 / \ / / 2 4 9 -5
  • el camino preferente de a es 7 6 -3 -5 2.
  • el camino preferente de b es 7 -2 -3 5.

Entrada

La entrada es un árbol de enteros.

Salida

La salida es una pila con el camino preferente. La raiz del arbol esta en la cima de la pila.

Observación

Tan solo se debe enviar un fichero que contenga la función con la cabecera del enunciado y cualquier otra función auxiliar que creais conveniente, sin la función main. Añadid también los includes de las clases Arbre i stack mediante


#include "Arbre.hh"


#include <stack>

Information
Author
Alberto Moreno (adaptador), Ramon Ferrer i Cancho (responsable)
Language
Spanish
Translator
Original language
Catalan
Other languages
Catalan English
Official solutions
Unknown. This problem is being checked.
User solutions
C++