Arboles, Inorden Y Conteo De Nodos En C++

Páginas: 4 (777 palabras) Publicado: 14 de mayo de 2012
Tema: Arboles

Actividad:
* Realizar el programa y corrida de el Recorrido de un arbol, por Entre-Orden.

Algoritmo:

EntreOrden(nodo)
si nodo = nulo entonces retornaEntreOrden(nodo.izquierda)
imprime nodo.valor
EntreOrden (nodo.derecha)

Programa:

#include <iostream>

using namespace std;

class ArbolABB {
private:

class Nodo {
public:Nodo(const int dat, Nodo *izq=NULL, Nodo *der=NULL) :
dato(dat), izquierdo(izq), derecho(der) {}

int dato;
Nodo *izquierdo;
Nodo *derecho;
};

Nodo*raiz;
Nodo *actual;

public:

ArbolABB() : raiz(NULL), actual(NULL) {}
~ArbolABB() { Podar(raiz); }

void Insertar(const int dat);

bool Vacio(Nodo *r) { return r==NULL; }bool EsHoja(Nodo *r) { return !r->derecho && !r->izquierdo; }

void Raiz() { actual = raiz; }

void EntreOrden(void (*func)(int&) , Nodo *nodo=NULL, bool r=true);private:

void Podar(Nodo* &);
};

void ArbolABB::Insertar(const int dat)
{
Nodo *padre = NULL;

actual = raiz;

while(!Vacio(actual) && dat != actual->dato) {padre = actual;
if(dat > actual->dato) actual = actual->derecho;
else if(dat < actual->dato) actual = actual->izquierdo;
}

if(!Vacio(actual)) return;if(Vacio(padre)) raiz = new Nodo(dat);

else if(dat < padre->dato) padre->izquierdo = new Nodo(dat);

else if(dat > padre->dato) padre->derecho = new Nodo(dat);
}void ArbolABB::EntreOrden(void (*func)(int&) , Nodo *nodo, bool r)
{
if(r) nodo = raiz;
if(nodo->izquierdo) EntreOrden(func, nodo->izquierdo, false);
func(nodo->dato);if(nodo->derecho) EntreOrden(func, nodo->derecho, false);
}

void ArbolABB::Podar(Nodo* &nodo)
{
if(nodo) {
Podar(nodo->izquierdo);
Podar(nodo->derecho);...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Nodos y Arboles
  • Algoritmos Árbol y Nodos
  • Arboles C++
  • árbol y nodos
  • Informatica. Arboles En C++
  • pilas,colas y arboles en c++
  • ARBOLES BINARIOS DE BUSQUEDA EN C
  • Arboles Binarios En C++

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS