Ordenamiento por arbol binario

JosAntonioSandovalAc 1,819 views 3 slides Oct 20, 2017
Slide 1
Slide 1 of 3
Slide 1
1
Slide 2
2
Slide 3
3

About This Presentation

Estructura de datos
Árboles Binarios
Método de ordenamiento por árbol binario
Programa que captura un arreglo de 10 posiciones e inserta los valores en un árbol binario, después aplica el método de acceso inorden y regresa un conjunto de números ordenados.


Slide Content

Ordenamiento por árbol binario
Programa en C++ que utiliza arboles binarios para ordenar un arreglo de 10
elementos, el procedimiento consiste en capturar los elementos de forma
arbitraria (sin orden), después son trasladados a in árbol binario donde todo lo que
es menor a la raíz se va al subárbol izquierdo y todo lo que es mayor o igual a la raíz
va al subárbol derecho, finalmente se aplica el método de búsqueda inorden, el
resultado es un conjunto de números ordenados.

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
class nodo {
public:
int info;
nodo *izquierda;
nodo *derecha;
nodo() {
izquierda=NULL;
derecha=NULL;
}
};

class arbol {
public:
int arreglo[10];
void capturar();
void insertar(nodo *raiz, int indice);
void enOrden(nodo *raiz);
arbol(){ }
};

void arbol::capturar() {
for (int i=0; i<=9; i++) {
cout<<"Capture dato en posición "<<i<<": ";
cin>>arreglo[i];
}
}

void arbol::insertar(nodo *raiz, int indice) {
if (raiz->info>arreglo[indice]) {
if (raiz->izquierda!=NULL) {
raiz=raiz->izquierda;
cout<<"Nodo Izquierda: "<<raiz->info<<endl;
insertar(raiz,indice);
} else {
nodo *nuevo = new nodo();
nuevo->info=arreglo[indice];
raiz->izquierda=nuevo;
cout<<"Insertar Izquierda: "<<nuevo->info<<endl;
return;

}
} else {
if (raiz->derecha!=NULL) {
raiz=raiz->derecha;
cout<<"Nodo Derecha: "<<raiz->info<<endl;
insertar(raiz,indice);
} else {
nodo *nuevo = new nodo();
nuevo->info=arreglo[indice];
raiz->derecha=nuevo;
cout<<"Insertar Derecha: "<<nuevo->info<<endl;
return;
}
}
}

void arbol::enOrden(nodo *raiz) {
if (raiz!=NULL) {
enOrden(raiz->izquierda);
cout<<"Dato en Enorden: "<<raiz->info<<endl;
enOrden(raiz->derecha);
}
}

int main(int argc, char** argv) {
arbol B;
B.capturar();
nodo *raiz = new nodo();
raiz->info=B.arreglo[0];
cout<<"Raiz: "<<raiz->info<<endl;
for (int i=1; i<10; i++) {
B.insertar(raiz,i);
}
cout<<"Iniciando recorridos..."<<endl;
cout<<"*** Recorrido en enOrden ***"<<endl;
B.enOrden(raiz);
cout<<"Fin del recorrido, datos ordenados..."<<endl;
return 0;
}