Camí preferent d'un arbre X38658


Statement
 

pdf   zip   tar

html

Recordeu que una fulla d’un arbre és un node sense cap successor. Un camí dins d’un arbre és una successió de nodes que van de l’arrel a una fulla.

Donat un arbre binari a d’elements de qualsevol tipus, definim el camí preferent de l’arbre a de la següent manera: si a és buit llavors el camí preferent d’a també és buit; en cas contrari, el camí preferent d’a el forma l’element arrel d’a seguit del camí preferent del fill d’a que tingui més elements. Si a té dos fills no buits amb el mateix nombre d’elements es tria el camí preferent del fill esquerre.

Volem una operació que ens permeti saber quin és el camí preferent d’un arbre d’enters, representant aquest camí amb una pila d’enters, ordenada de forma que el primer element del camí (si existeix) sigui al cim de la pila. Feu servir la següent especificació:

void cami_preferent(Arbre<int> &a, stack<int> &c) /* Pre: a=A, c es buida */ /* Post: c conte el cami preferent d'A; si no es buit, el primer element del cami es al cim de c */

Exemple: considereu els dos arbres següents

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 camí preferent d’a és 7 6 -3 -5 2.
  • el camí preferent de b és 7 -2 -3 5.

Entrada

L’entrada és un arbre d’enters.

Sortida

La sortida és una pila amb el camí preferent. L’arrel de l’arbre és al cim de la pila.

Observació

Només s’ha d’enviar un fitxer que contengui la funció amb la capçalera de l’enunciat i qualsevol altra funció auxiliar que cregueu convenient, sense la funció main. Afegiu-hi també els includes de les classes Arbre i stack mitjançant


#include "Arbre.hh"


#include <stack>

Information
Author
Alberto Moreno (adaptador), Ramon Ferrer i Cancho (responsable)
Language
Catalan
Other languages
English Spanish
Official solutions
Unknown.
User solutions
C++