SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacionjenny
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Sarai Gotopo
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSAnthony Can
 
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 sortlinkinpark03
 

La actualidad más candente (20)

Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Arboles
ArbolesArboles
Arboles
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacion
 
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
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Unidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOSUnidad v arboles ESTRUCTURA DE DATOS
Unidad v arboles ESTRUCTURA DE DATOS
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
 
Teoría de Grafos.
Teoría de Grafos.Teoría de Grafos.
Teoría de Grafos.
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
Arreglos - Assembler
Arreglos - AssemblerArreglos - Assembler
Arreglos - Assembler
 
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
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 

Destacado

Destacado (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
 
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
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 

Similar a 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 binarios
Arboles binariosArboles binarios
Arboles binarios
 
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
 

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