Version:0.9 StartHTML:0000000105 EndHTML:0000006258 StartFragment:0000000152 EndFragment:0000006224
/******************************************************/
/*************** Isidro Pastor Jorda ******************/
/******************************************************/
/****************** Telematica ************************/
/******************** FPII ****************************/
/****************** Practica 6 ************************/
/******************************************************/
#include <iostream.h>
#include <stdlib.h>
#include <string>
#include "ArbolBinario.h"
/*****************************************************************************
* Funcion: Arbol
* Descripcion: Constructor de la clase arbol
*
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
*
*
*
*
* Valor devuelto:
* Inicializa un objeto de la clase arbol
*****************************************************************************/
Arbol::Arbol()
{
esvacio = true;
izq = NULL;
der = NULL;
};
/*****************************************************************************
* Funcion: Arbol
* Descripcion: Constructor de copia de la clase arbol
*
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
*
*
*
*
* Valor devuelto:
* Hace una copia del objeto de la clase arbol que hace la llamada
*****************************************************************************/
Arbol::Arbol (Arbol & ori)
{
if (!ori.ArbolVacio())
{
izq = new Arbol (ori.HijoIzdo());
der = new Arbol (ori.HijoDcho());
ori.Informacion (dato);
esvacio = false;
}
else
esvacio = true;
};
/*****************************************************************************
* Funcion: ~Arbol
* Descripcion: Destructor de la clase arbol
*
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
*
*
*
*
* Valor devuelto:
* Destruye el objeto de la clase arbol que hace la llamada
*****************************************************************************/
Arbol::~Arbol()
{
if (!esvacio)
{
delete izq;
delete der;
}
};
/*****************************************************************************
* Funcion: ArbolVacio
* Descripcion: Nos indica si el objeto arbol que hace la llamada esta vacio.
*
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
*
*
*
*
* Valor devuelto:
* True si el objeto arbol esta vacio, false en caso contrario.
*****************************************************************************/
bool Arbol::ArbolVacio()
{
return (esvacio);
};
/*****************************************************************************
* Funcion: HijoIzdo
* Descripcion: Devuelve el hijo izquierdo del objeto que hace la llamada.
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
*
*
*
*
* Valor devuelto:
* Objeto de clase arbol.
*****************************************************************************/
Arbol & Arbol::HijoIzdo()
{
return (*izq);
};
/*****************************************************************************
* Funcion: HijoDcho
* Descripcion: Devuelve el hijo derecho del objeto que hace la llamada.
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
*
*
*
*
* Valor devuelto:
* Objeto de clase arbol.
*****************************************************************************/
Arbol & Arbol::HijoDcho()
{
return (*der);
};
/*****************************************************************************
* Funcion: Informacion
* Descripcion: Obtiene el dato almacenado en el nodo raiz del objeto
* que hace la llamada.
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
* x E/S Variable donde almacenaremos el Dato del nodo raiz
*
*
*
* Valor devuelto:
* True si existe elemento en el objeto, false en caso contrario.
*****************************************************************************/
bool Arbol::Informacion(Valor & x)
{
bool ok;
if(ArbolVacio())
ok = false;
else
{
ok = true;
x = dato;
}
return ok;
};
/*****************************************************************************
* Funcion: HacerArbol
* Descripcion: Inroduce dato en el objeto que hace la llamada
*
*
*
* Parametros:
*
* Nombre E/S Descripcion
* ------ ----- -----------
* x E Variable donde esta almacenado el contenido del nodo raiz
* que introducimos
* i E/S Arbol hijo izquierdo
* d E/S Arbol hijo derecho
*
*
* Valor devuelto:
* void
*****************************************************************************/
void Arbol::HacerArbol(Arbol &i, Valor x, Arbol &d)
{
esvacio = false;
dato = x;
izq = new Arbol(i);
der = new Arbol(d);
};