SlideShare une entreprise Scribd logo
1  sur  9
Ordenamiento con arbol binario Edwin Osuna Mahecha
historia    En 1951, a David Huffman y sus compañeros de clase de la asignatura “Teoría de la Información” se les permitió optar entre la realización de un examen final o la presentación de un trabajo. El profesor Robert. M. Fano asignó las condiciones del trabajo bajo la premisa de encontrar el código binario más eficiente.  Huffman, ante la imposibilidad de demostrar qué código era más eficiente, se rindió y empezó a estudiar para el examen final. Mientras estaba en este proceso vino a su mente la idea de usar árboles binarios de frecuencia ordenada y rápidamente probó que éste era el método más eficiente.
Ordenamiento con árbol binario El ordenamiento con árbol binario es un algoritmo de ordenamiento, el cual ordena sus elementos haciendo uso de un árbol binario de búsqueda. Se basa en ir construyendo poco a poco el árbol binario introduciendo cada uno de los elementos, los cuales quedarán ya ordenados. Después, se obtiene la lista de los elementos ordenados recorriendo el árbol en inorden.
Descripción     Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma: Todo árbol vacío es un árbol binario de búsqueda. Un   árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si:      En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario de búsqueda.      En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario de búsqueda.
Complejidad Insertar elementos en un árbol binario de búsqueda tiene una complejidad O(log n). Entonces, agregar n elementos a un árbol cualquiera da como resultado una complejidad O(n log n). Además, recorrer los elementos del árbol en inorden tiene complejidad O(n).
Características Tiene un buen rendimiento. Es estable (no cambia el orden relativo de elementos iguales). No requiere espacio de almacenamiento extra. Puede ordenar listas tal cual las recibe.
Pseudocodigo Pseudocodigo preorden preorden( nodo )     //donde nodo es un  registro de tipo puntero//valor, nIzq y nDer son campos del registro nodo.//valor = valor del nodo que se esta visitando//nIzq y nDer= valor de tipo apuntador (sirven para no perder los nodos derecho e izquierdo y poder volver cuando se necesite)     si nodo <> NULO  entonces //(si nodo no es nulo/vacío)     visitar el nodo //nodo.info (obtenemos el valor del nodo )preorden(nodo.izq) //llamamos de nuevo el método preorden mandando como parámetro el nodo izquierdo del nodo actual.preorden(nodo.der) //llamamos de nuevo el metodopreorden mandando como parámetro el nodo derecho del nodo actual fin fin
Pseudocodigo  inorden inorden( nodo )     //donde nodo es un registro de tipo puntero//valor, nIzq y nDer son campos del registro nodo.//valor = valor del nodo que se esta visitando//nIzq y nDer= valor de tipo apuntador (sirven para no perder los nodos derecho e izquierdo y poder volver cuando se necesite)     si nodo <> NULO  entonces //(si nodo no es nulo/vacío) inorden(nodo.izq) //llamamos de nuevo el método inorden mandando como parámetro el nodo izquierdo del nodo actual.visitar el nodo //nodo.info (obtenemos el valor del nodo )inorden(nodo.der) //llamamos de nuevo el método inorden mandando como parámetro el nodo derecho del nodo actual     fin    fin
Pseudocodigo Pseudocodigo postorden postorden( nodo )     //donde nodo es un registro de tipo puntero//valor, nIzq y nDer son campos del registro nodo.//valor = valor del nodo que se esta visitando//nIzq y nDer= valor de tipo apuntador (sirven para no perder los nodos derecho e izquierdo y poder volver cuando se necesite)     si nodo <> NULO  entonces //(si nodo no es nulo/vacío) postorden(nodo.izq) //llamamos de nuevo el método postorden mandando como parámetro el nodo izquierdo del nodo actual.postorden(nodo.der) //llamamos de nuevo el método postorden mandando como parámetro el nodo derecho del nodo actualvisitar el nodo //nodo.info (obtenemos el valor del nodo )      fin     fin

Contenu connexe

Tendances (20)

Arbol aa
Arbol aaArbol aa
Arbol aa
 
Indices tipo arbol b+
Indices tipo arbol b+Indices tipo arbol b+
Indices tipo arbol b+
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Tad Colas
Tad ColasTad Colas
Tad Colas
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Arbol B
Arbol BArbol B
Arbol B
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Grafos Ponderados
Grafos PonderadosGrafos Ponderados
Grafos Ponderados
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Listas
ListasListas
Listas
 

En vedette

En vedette (20)

Arboles de expresion
Arboles de expresionArboles de expresion
Arboles de expresion
 
Ejercicio ÁRBOL DE EXPRESIONES ARITMÉTICAS
Ejercicio ÁRBOL DE EXPRESIONES ARITMÉTICASEjercicio ÁRBOL DE EXPRESIONES ARITMÉTICAS
Ejercicio ÁRBOL DE EXPRESIONES ARITMÉTICAS
 
Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binario
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
áRbol avl
áRbol avláRbol avl
áRbol avl
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Arboles con raiz
Arboles con raizArboles con raiz
Arboles con raiz
 
Ordenación por insertion sort
Ordenación por insertion sortOrdenación por insertion sort
Ordenación por insertion sort
 
4.5 a 4.8 ley de biot savart
4.5 a 4.8 ley de biot savart4.5 a 4.8 ley de biot savart
4.5 a 4.8 ley de biot savart
 
Cuadro Comparativo Algoritmos de Ordenamiento
Cuadro Comparativo Algoritmos de OrdenamientoCuadro Comparativo Algoritmos de Ordenamiento
Cuadro Comparativo Algoritmos de Ordenamiento
 
Ordenamiento por mezcla
Ordenamiento por mezclaOrdenamiento por mezcla
Ordenamiento por mezcla
 
Merge sort
Merge sortMerge sort
Merge sort
 
busqueda a profundidad dsf
busqueda a profundidad dsfbusqueda a profundidad dsf
busqueda a profundidad dsf
 
Ordenamiento por mezcla
Ordenamiento por mezclaOrdenamiento por mezcla
Ordenamiento por mezcla
 
Merge Sort
Merge SortMerge Sort
Merge Sort
 
Mergesort
MergesortMergesort
Mergesort
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 
Recorrido en árboles binarios
Recorrido en árboles binariosRecorrido en árboles binarios
Recorrido en árboles binarios
 

Similaire à Ordenamiento con árbol binario (20)

arbol.pdf
arbol.pdfarbol.pdf
arbol.pdf
 
Arboles
ArbolesArboles
Arboles
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
Para leer estructuras
Para leer estructurasPara leer estructuras
Para leer estructuras
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Seudocodigo arbol
Seudocodigo arbolSeudocodigo arbol
Seudocodigo arbol
 
tema4.pdf
tema4.pdftema4.pdf
tema4.pdf
 
Dylan_Medina_Arbol.pdf
Dylan_Medina_Arbol.pdfDylan_Medina_Arbol.pdf
Dylan_Medina_Arbol.pdf
 
Informe de Arboles.pdf
Informe de Arboles.pdfInforme de Arboles.pdf
Informe de Arboles.pdf
 
Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5Estructura de datos unidad 4 y 5
Estructura de datos unidad 4 y 5
 
Arboles
ArbolesArboles
Arboles
 
Arboles ej
Arboles ejArboles ej
Arboles ej
 
DECLARACION DE ARBOLES.pdf
DECLARACION DE ARBOLES.pdfDECLARACION DE ARBOLES.pdf
DECLARACION DE ARBOLES.pdf
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 
Arboles TDAS
Arboles TDASArboles TDAS
Arboles TDAS
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Arboles
ArbolesArboles
Arboles
 
Operaciones Básicas con Árboles
Operaciones Básicas con ÁrbolesOperaciones Básicas con Árboles
Operaciones Básicas con Árboles
 
Arbol en programación ALAN MENDEZ.pdf
Arbol en programación ALAN MENDEZ.pdfArbol en programación ALAN MENDEZ.pdf
Arbol en programación ALAN MENDEZ.pdf
 

Ordenamiento con árbol binario

  • 1. Ordenamiento con arbol binario Edwin Osuna Mahecha
  • 2. historia En 1951, a David Huffman y sus compañeros de clase de la asignatura “Teoría de la Información” se les permitió optar entre la realización de un examen final o la presentación de un trabajo. El profesor Robert. M. Fano asignó las condiciones del trabajo bajo la premisa de encontrar el código binario más eficiente. Huffman, ante la imposibilidad de demostrar qué código era más eficiente, se rindió y empezó a estudiar para el examen final. Mientras estaba en este proceso vino a su mente la idea de usar árboles binarios de frecuencia ordenada y rápidamente probó que éste era el método más eficiente.
  • 3. Ordenamiento con árbol binario El ordenamiento con árbol binario es un algoritmo de ordenamiento, el cual ordena sus elementos haciendo uso de un árbol binario de búsqueda. Se basa en ir construyendo poco a poco el árbol binario introduciendo cada uno de los elementos, los cuales quedarán ya ordenados. Después, se obtiene la lista de los elementos ordenados recorriendo el árbol en inorden.
  • 4. Descripción Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma: Todo árbol vacío es un árbol binario de búsqueda. Un árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si: En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario de búsqueda. En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario de búsqueda.
  • 5. Complejidad Insertar elementos en un árbol binario de búsqueda tiene una complejidad O(log n). Entonces, agregar n elementos a un árbol cualquiera da como resultado una complejidad O(n log n). Además, recorrer los elementos del árbol en inorden tiene complejidad O(n).
  • 6. Características Tiene un buen rendimiento. Es estable (no cambia el orden relativo de elementos iguales). No requiere espacio de almacenamiento extra. Puede ordenar listas tal cual las recibe.
  • 7. Pseudocodigo Pseudocodigo preorden preorden( nodo ) //donde nodo es un  registro de tipo puntero//valor, nIzq y nDer son campos del registro nodo.//valor = valor del nodo que se esta visitando//nIzq y nDer= valor de tipo apuntador (sirven para no perder los nodos derecho e izquierdo y poder volver cuando se necesite) si nodo <> NULO  entonces //(si nodo no es nulo/vacío) visitar el nodo //nodo.info (obtenemos el valor del nodo )preorden(nodo.izq) //llamamos de nuevo el método preorden mandando como parámetro el nodo izquierdo del nodo actual.preorden(nodo.der) //llamamos de nuevo el metodopreorden mandando como parámetro el nodo derecho del nodo actual fin fin
  • 8. Pseudocodigo  inorden inorden( nodo ) //donde nodo es un registro de tipo puntero//valor, nIzq y nDer son campos del registro nodo.//valor = valor del nodo que se esta visitando//nIzq y nDer= valor de tipo apuntador (sirven para no perder los nodos derecho e izquierdo y poder volver cuando se necesite) si nodo <> NULO  entonces //(si nodo no es nulo/vacío) inorden(nodo.izq) //llamamos de nuevo el método inorden mandando como parámetro el nodo izquierdo del nodo actual.visitar el nodo //nodo.info (obtenemos el valor del nodo )inorden(nodo.der) //llamamos de nuevo el método inorden mandando como parámetro el nodo derecho del nodo actual fin fin
  • 9. Pseudocodigo Pseudocodigo postorden postorden( nodo ) //donde nodo es un registro de tipo puntero//valor, nIzq y nDer son campos del registro nodo.//valor = valor del nodo que se esta visitando//nIzq y nDer= valor de tipo apuntador (sirven para no perder los nodos derecho e izquierdo y poder volver cuando se necesite) si nodo <> NULO  entonces //(si nodo no es nulo/vacío) postorden(nodo.izq) //llamamos de nuevo el método postorden mandando como parámetro el nodo izquierdo del nodo actual.postorden(nodo.der) //llamamos de nuevo el método postorden mandando como parámetro el nodo derecho del nodo actualvisitar el nodo //nodo.info (obtenemos el valor del nodo )  fin fin