Ordenamiento con<br />arbol binario<br />Edwin Osuna Mahecha<br />
historia<br />   En 1951, a David Huffman y sus compañeros de clase de la asignatura “Teoría de la Información” se les per...
Ordenamiento con árbol binario<br />El ordenamiento con árbol binario es un algoritmo de ordenamiento, el cual ordena sus ...
Descripción<br />    Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma:<br />Todo árbo...
Complejidad<br />Insertar elementos en un árbol binario de búsqueda tiene una complejidad O(log n). Entonces, agregar n el...
Características<br />Tiene un buen rendimiento.<br />Es estable (no cambia el orden relativo de elementos iguales).<br />N...
Pseudocodigo<br />Pseudocodigo preorden<br />preorden( nodo )<br />    //donde nodo es un  registro de tipo puntero//valor...
Pseudocodigo  inorden<br />inorden( nodo )<br />    //donde nodo es un registro de tipo puntero//valor, nIzq y nDer son ca...
Pseudocodigo<br />Pseudocodigo postorden<br />postorden( nodo )<br />    //donde nodo es un registro de tipo puntero//valo...
Próxima SlideShare
Cargando en…5
×

Ordenamiento con árbol binario

6.003 visualizaciones

Publicado el

0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
6.003
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
69
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Ordenamiento con árbol binario

  1. 1. Ordenamiento con<br />arbol binario<br />Edwin Osuna Mahecha<br />
  2. 2. historia<br /> 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. <br />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.<br />
  3. 3. Ordenamiento con árbol binario<br />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.<br />
  4. 4. Descripción<br /> Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma:<br />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: <br /> 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. <br /> 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. <br />
  5. 5. Complejidad<br />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).<br />
  6. 6. Características<br />Tiene un buen rendimiento.<br />Es estable (no cambia el orden relativo de elementos iguales).<br />No requiere espacio de almacenamiento extra.<br />Puede ordenar listas tal cual las recibe.<br />
  7. 7. Pseudocodigo<br />Pseudocodigo preorden<br />preorden( nodo )<br /> //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)<br /> si nodo <> NULO  entonces //(si nodo no es nulo/vacío)<br /> 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<br />fin<br />fin<br />
  8. 8. Pseudocodigo  inorden<br />inorden( nodo )<br /> //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)<br /> si nodo <> NULO  entonces //(si nodo no es nulo/vacío)<br />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<br /> fin<br /> fin<br />
  9. 9. Pseudocodigo<br />Pseudocodigo postorden<br />postorden( nodo )<br /> //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)<br /> si nodo <> NULO  entonces //(si nodo no es nulo/vacío)<br />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 ) <br /> fin<br /> fin<br />

×