ESTRUCTURA DE DATOS II ÁRBOLES BINARIOS  UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD INTEGRAL DEL CHACO PROFESOR: Ing. Evans  Balcazar Veizaga
Árboles Ordenados:  Hablaremos de árboles ordenados, ya que son los que tienen más interés desde el punto de vista de ADT, y los que tienen más aplicaciones genéricas. Un árbol ordenado, en general, es aquel a partir del cual se puede obtener una secuencia ordenada siguiendo uno de los recorridos posibles del árbol: Pre-Orden, In-Orden y Post-Orden.  En estos árboles es importante que la secuencia se mantenga ordenada aunque se añadan o se eliminen nodos.
Árboles Ordenados:  Existen varios tipos de árboles ordenados, que veremos a continuación: Árboles binarios de búsqueda (ABB):  son árboles de orden 2 que mantienen una secuencia ordenada si se recorren en in-orden.  Árboles AVL:  son árboles binarios de búsqueda equilibrados, es decir, los niveles de cada rama para cualquier nodo no difieren en más de 1.  Árboles perfectamente equilibrados:  son árboles binarios de búsqueda en los que el número de nodos de cada rama para cualquier nodo no difieren en más de 1. Son por lo tanto árboles AVL también.  Árboles 2-3:  son árboles de orden 3, que contienen dos claves en cada nodo y que están también equilibrados. También generan secuencias ordenadas al recorrerlos en in-orden.  Árboles-B:  caso general de árboles 2-3, que para un orden M, contienen M-1 claves.
Definición   Se trata de árboles de orden 2 en los que se cumple que para cada nodo, el valor de la clave de la raíz del subárbol izquierdo es menor que el valor de la clave del nodo y que el valor de la clave raíz del subárbol derecho es mayor que el valor de la clave del nodo. Árboles Binarios:
Buscar un elemento.  Insertar un elemento.  Borrar un elemento.  Movimientos a través del árbol:  Izquierda.  Derecha.  Raiz.  Información:  Comprobar si un árbol está vacío.  Calcular el número de nodos.  Comprobar si el nodo es hoja.  Calcular la altura de un nodo.  Calcular la altura de un árbol.   Operaciones  :
Buscar un elemento : Partiendo siempre del nodo raíz, el modo de buscar un elemento se define de forma recursiva. Si el árbol está vacío, terminamos la búsqueda: el elemento no está en el árbol.  Si el valor del nodo raíz es igual que el del elemento que buscamos, terminamos la búsqueda con éxito.  Si el valor del nodo raíz es mayor que el elemento que buscamos, continuaremos la búsqueda en el árbol izquierdo.  Si el valor del nodo raíz es menor que el elemento que buscamos, continuaremos la búsqueda en el árbol derecho.  El valor de retorno de una función de búsqueda en un ABB puede ser un puntero al nodo encontrado, o NULL, si no se ha encontrado.
Insertar un Elemento: Si el elemento está en el árbol no lo insertaremos. Si no lo está, lo insertaremos a continuación del último nodo visitado.  Necesitamos un puntero auxiliar para conservar una referencia al padre del nodo raíz actual. El valor inicial para ese puntero es NULL. Padre  = NULL  nodo  = Raiz  Bucle: mientras  nodo  actual no sea un árbol vacío o hasta que se encuentre el elemento.  Si el valor del nodo raíz es mayor que el elemento que buscamos, continuaremos la búsqueda en el árbol izquierdo:  Padre = nodo ,  nodo = nodo ->izquierdo.
Insertar un Elemento: Si el valor del nodo raíz es menor que el elemento que buscamos, continuaremos la búsqueda en el árbol derecho:  Padre = nodo ,  nodo = nodo ->derecho.   Si  nodo  no es NULL, el elemento está en el árbol, por lo tanto salimos.  Si  Padre  es NULL, el árbol estaba vacío, por lo tanto, el nuevo árbol sólo contendrá el nuevo elemento, que será la raíz del árbol.  Si el elemento es  menor  que el  Padre , entonces insertamos el nuevo elemento como un nuevo árbol  izquierdo  de Padre.  Si el elemento es  mayor  que el  Padre , entonces insertamos el nuevo elemento como un nuevo árbol derecho de Padre.
Borrar un Elemento: Padre = NULL  Si el árbol está vacío: el elemento no está en el árbol, por lo tanto salimos sin eliminar ningún elemento.  (1) Si el valor del nodo raíz es igual que el del elemento que buscamos, estamos ante uno de los siguientes casos:  El nodo raíz es un nodo hoja:  Si 'Padre' es NULL, el nodo raíz es el único del árbol, por lo tanto el puntero al árbol debe ser NULL.  Si raíz es la rama derecha de 'Padre', hacemos que esa rama apunte a NULL.  Si raíz es la rama izquierda de 'Padre', hacemos que esa rama apunte a NULL.  Eliminamos el nodo, y salimos.
Borrar un Elemento: El nodo no es un nodo hoja:  Buscamos el 'nodo' más a la izquierda del árbol derecho de raíz o el más a la derecha del árbol izquierdo. Hay que tener en cuenta que puede que sólo exista uno de esos árboles. Al mismo tiempo, actualizamos 'Padre' para que apunte al padre de 'nodo'.  Intercambiamos los elementos de los nodos raíz y 'nodo'.  Borramos el nodo 'nodo'. Esto significa volver a (1), ya que puede suceder que 'nodo' no sea un nodo hoja. (Ver ejemplo 3)  Si el valor del nodo raíz es mayor que el elemento que buscamos, continuaremos la búsqueda en el árbol izquierdo.  Si el valor del nodo raíz es menor que el elemento que buscamos, continuaremos la búsqueda en el árbol derecho.
Ejemplo 1: Ejemplo 1: Cuando  nodo a eliminar es una hoja En el ejemplo, borrar el nodo 3. Localizamos el nodo a borrar, al tiempo que mantenemos un puntero a 'Padre'.  Hacemos que el puntero de 'Padre' que apuntaba a 'nodo', ahora apunte a NULL.  Borramos el 'nodo'.
Ejemplo 2: Ejemplo 2: El nodo a eliminar es incompleto. En el ejemplo, borrar el nodo 4. Localizamos el nodo a borrar, al tiempo que mantenemos un puntero a 'Padre'. Verificamos cual de los hijos del nodo a borrar no es NULO.  Enlazamos el puntero del PADRE que apunta al nodo a borrar a el hijo del nodo NO NULO.  Borramos el 'nodo'.
Ejemplo 3: Ejemplo 3: El nodo a eliminar es completo, pero no es hoja. En el ejemplo, borrar el nodo 17. Busquese el sucesor In-Orden del nodo a borrar: sea N el nodo a borrar y S el sucesor In-Orden de N.  Intercambiar la DATA de  S con la DATA de N.  Eliminar el nodo S según el Caso 1 o 2.
Realizar la implementación árbol con los siguientes métodos : vacio() lleno() cant_hojas() cant_nodos() existe() completo() incompleto() insertar() eliminar() Practica:
¿Ahora a Trabajar?
GRACIAS INF-310  Estructura de Datos II

Más contenido relacionado

PPTX
Programación 3: árboles binarios y ordenados
PPS
Arboles Ordenados
PPT
áRboles binarios
PDF
Árboles binarios, ABB y AVL
PPTX
Arboles Binarios y Arboles Binarios de Busqueda
PPTX
Arboles binarios
Programación 3: árboles binarios y ordenados
Arboles Ordenados
áRboles binarios
Árboles binarios, ABB y AVL
Arboles Binarios y Arboles Binarios de Busqueda
Arboles binarios

La actualidad más candente (20)

PPTX
ARBOLES BINARIOS
DOCX
Arboles En Estructura de Datos
PPTX
Programacion estructura de arboles en c
PPTX
Arboles multicamino
PPT
Arboles Binarios
PPTX
Arboles binarios
PPTX
Arboles binarios
PPTX
arboles avl con codigo en java
PPTX
Programación 3: árboles de búsqueda equilibrados
PPTX
Arboles presentacion
PPT
áRboles binarios
PDF
C11.1. árboles
PPTX
Arboles
PPTX
Ordenamiento con árbol binario
PPSX
Arboles balanceados
PDF
Arboles v2
PPT
3 estructuras no lineales estáticas y dinámicas
PPTX
Diapositiva de prueba
PDF
Árboles Multicamino, B y B+
ARBOLES BINARIOS
Arboles En Estructura de Datos
Programacion estructura de arboles en c
Arboles multicamino
Arboles Binarios
Arboles binarios
Arboles binarios
arboles avl con codigo en java
Programación 3: árboles de búsqueda equilibrados
Arboles presentacion
áRboles binarios
C11.1. árboles
Arboles
Ordenamiento con árbol binario
Arboles balanceados
Arboles v2
3 estructuras no lineales estáticas y dinámicas
Diapositiva de prueba
Árboles Multicamino, B y B+
Publicidad

Destacado (20)

PPTX
Estructuras de datos
PPT
Inserción,borrado y búsqueda en Arboles Binarios(Java)
PPTX
PPT
Vida de una planta
DOCX
Investigación e información sobre plantas medicinales
PDF
1.estructura de la planta
PDF
Secuencia de plantas clase nº 5
PPTX
Tipos de raices
ODP
Algas y musgos
PPTX
Anatomía y morfología de la Raíz de una planta.
DOC
Planificacion cs naturales partes de la planta
PDF
Técnicas para identificar la causa raíz
DOC
Unidad Didáctica-!Que bonitas las plantas!
PPTX
Partes de la planta, explicación para niños
PPTX
Las plantas power point
PDF
Anatomia de la raiz
PPTX
Las partes de la planta y sus funciones
PDF
Secuencia didáctica de Ciencias Naturales
PPT
Secuencia DidáCtica
Estructuras de datos
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Vida de una planta
Investigación e información sobre plantas medicinales
1.estructura de la planta
Secuencia de plantas clase nº 5
Tipos de raices
Algas y musgos
Anatomía y morfología de la Raíz de una planta.
Planificacion cs naturales partes de la planta
Técnicas para identificar la causa raíz
Unidad Didáctica-!Que bonitas las plantas!
Partes de la planta, explicación para niños
Las plantas power point
Anatomia de la raiz
Las partes de la planta y sus funciones
Secuencia didáctica de Ciencias Naturales
Secuencia DidáCtica
Publicidad

Similar a Arboles Binarios (20)

PDF
Abb árboles de búsqueda binaria
PDF
Tema6-Arboles.pdf
PPT
Objetivo 6-2.ppt
PPT
Abinariosbusqueda
PPTX
Arboles_Java 1111111111111111 teoria .pptx
PPT
04 curso-prope-py ed-arboles
PPT
Arboles ppt
PDF
estudio de desarrolode estraucturade dat
PPT
Arboles 2-3 Insertar Eliminar
PDF
Arboles.pdf
PPSX
Abb diferencias entre c++ y java
PPT
1 árbol
PPT
Lider zambrano 4to s
PDF
Estructuras no lineales
PDF
arbol.pdf
PPT
Arbol b ASIRB
PPTX
Iv unidad estructuras no lineales
PPT
binarySearchTree.ppt
PDF
Arboles Binarios
PPTX
Estructuras no lineales de la unidad 4
Abb árboles de búsqueda binaria
Tema6-Arboles.pdf
Objetivo 6-2.ppt
Abinariosbusqueda
Arboles_Java 1111111111111111 teoria .pptx
04 curso-prope-py ed-arboles
Arboles ppt
estudio de desarrolode estraucturade dat
Arboles 2-3 Insertar Eliminar
Arboles.pdf
Abb diferencias entre c++ y java
1 árbol
Lider zambrano 4to s
Estructuras no lineales
arbol.pdf
Arbol b ASIRB
Iv unidad estructuras no lineales
binarySearchTree.ppt
Arboles Binarios
Estructuras no lineales de la unidad 4

Más de Evans Balcazar (20)

PPT
Matriz Sparse
PPT
ANALISIS DE ALGORITMOS
PPT
ANALISIS DE ALGORITMOS
PPT
ESTRUCTURAS DE DATOS FUNDAMENTALES
PPT
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PPT
Recorridos de Grafos
PPT
Introduccion a Arboles AVL
PPT
Insercion Arboles AVL
PPT
Arboles AVL Rotaciones
PPS
Arboles Recorridos
PPT
Recorrido de Grafos
PPT
Introduccion a Grafos 2
PPT
Introduccion a Grafos 1
PPT
Dce06 Arteaga 2007 2 Conferencia
PPT
Dce06 Arteaga 2007 1 Conferencia
PPT
Dce06 Arteaga 2007 3 Conferencia
PPT
Modelo Persistente
PPT
Modelo Simulado
PPT
Modelo Estatico
PPT
Modelo Dinamico
Matriz Sparse
ANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOS
ESTRUCTURAS DE DATOS FUNDAMENTALES
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
Recorridos de Grafos
Introduccion a Arboles AVL
Insercion Arboles AVL
Arboles AVL Rotaciones
Arboles Recorridos
Recorrido de Grafos
Introduccion a Grafos 2
Introduccion a Grafos 1
Dce06 Arteaga 2007 2 Conferencia
Dce06 Arteaga 2007 1 Conferencia
Dce06 Arteaga 2007 3 Conferencia
Modelo Persistente
Modelo Simulado
Modelo Estatico
Modelo Dinamico

Último (20)

PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PPTX
Uso responsable de la tecnología - EEST N°1
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PDF
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
PPT
Protocolos de seguridad y mecanismos encriptación
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
Curso de generación de energía mediante sistemas solares
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
PPTX
Control de calidad en productos de frutas
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PPTX
Sistema de Gestión Integral TCA Ingenieros.pptx
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PDF
Taller tecnológico Michelle lobo Velasquez
PPTX
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Uso responsable de la tecnología - EEST N°1
Historia Inteligencia Artificial Ana Romero.pptx
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
Protocolos de seguridad y mecanismos encriptación
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
Curso de generación de energía mediante sistemas solares
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
Control de calidad en productos de frutas
Guía 5. Test de orientación Vocacional 2.docx
Sistema de Gestión Integral TCA Ingenieros.pptx
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Documental Beyond the Code (Dossier Presentación - 2.0)
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
Taller tecnológico Michelle lobo Velasquez
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks

Arboles Binarios

  • 1. ESTRUCTURA DE DATOS II ÁRBOLES BINARIOS UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD INTEGRAL DEL CHACO PROFESOR: Ing. Evans Balcazar Veizaga
  • 2. Árboles Ordenados: Hablaremos de árboles ordenados, ya que son los que tienen más interés desde el punto de vista de ADT, y los que tienen más aplicaciones genéricas. Un árbol ordenado, en general, es aquel a partir del cual se puede obtener una secuencia ordenada siguiendo uno de los recorridos posibles del árbol: Pre-Orden, In-Orden y Post-Orden. En estos árboles es importante que la secuencia se mantenga ordenada aunque se añadan o se eliminen nodos.
  • 3. Árboles Ordenados: Existen varios tipos de árboles ordenados, que veremos a continuación: Árboles binarios de búsqueda (ABB): son árboles de orden 2 que mantienen una secuencia ordenada si se recorren en in-orden. Árboles AVL: son árboles binarios de búsqueda equilibrados, es decir, los niveles de cada rama para cualquier nodo no difieren en más de 1. Árboles perfectamente equilibrados: son árboles binarios de búsqueda en los que el número de nodos de cada rama para cualquier nodo no difieren en más de 1. Son por lo tanto árboles AVL también. Árboles 2-3: son árboles de orden 3, que contienen dos claves en cada nodo y que están también equilibrados. También generan secuencias ordenadas al recorrerlos en in-orden. Árboles-B: caso general de árboles 2-3, que para un orden M, contienen M-1 claves.
  • 4. Definición Se trata de árboles de orden 2 en los que se cumple que para cada nodo, el valor de la clave de la raíz del subárbol izquierdo es menor que el valor de la clave del nodo y que el valor de la clave raíz del subárbol derecho es mayor que el valor de la clave del nodo. Árboles Binarios:
  • 5. Buscar un elemento. Insertar un elemento. Borrar un elemento. Movimientos a través del árbol: Izquierda. Derecha. Raiz. Información: Comprobar si un árbol está vacío. Calcular el número de nodos. Comprobar si el nodo es hoja. Calcular la altura de un nodo. Calcular la altura de un árbol. Operaciones :
  • 6. Buscar un elemento : Partiendo siempre del nodo raíz, el modo de buscar un elemento se define de forma recursiva. Si el árbol está vacío, terminamos la búsqueda: el elemento no está en el árbol. Si el valor del nodo raíz es igual que el del elemento que buscamos, terminamos la búsqueda con éxito. Si el valor del nodo raíz es mayor que el elemento que buscamos, continuaremos la búsqueda en el árbol izquierdo. Si el valor del nodo raíz es menor que el elemento que buscamos, continuaremos la búsqueda en el árbol derecho. El valor de retorno de una función de búsqueda en un ABB puede ser un puntero al nodo encontrado, o NULL, si no se ha encontrado.
  • 7. Insertar un Elemento: Si el elemento está en el árbol no lo insertaremos. Si no lo está, lo insertaremos a continuación del último nodo visitado. Necesitamos un puntero auxiliar para conservar una referencia al padre del nodo raíz actual. El valor inicial para ese puntero es NULL. Padre = NULL nodo = Raiz Bucle: mientras nodo actual no sea un árbol vacío o hasta que se encuentre el elemento. Si el valor del nodo raíz es mayor que el elemento que buscamos, continuaremos la búsqueda en el árbol izquierdo: Padre = nodo , nodo = nodo ->izquierdo.
  • 8. Insertar un Elemento: Si el valor del nodo raíz es menor que el elemento que buscamos, continuaremos la búsqueda en el árbol derecho: Padre = nodo , nodo = nodo ->derecho. Si nodo no es NULL, el elemento está en el árbol, por lo tanto salimos. Si Padre es NULL, el árbol estaba vacío, por lo tanto, el nuevo árbol sólo contendrá el nuevo elemento, que será la raíz del árbol. Si el elemento es menor que el Padre , entonces insertamos el nuevo elemento como un nuevo árbol izquierdo de Padre. Si el elemento es mayor que el Padre , entonces insertamos el nuevo elemento como un nuevo árbol derecho de Padre.
  • 9. Borrar un Elemento: Padre = NULL Si el árbol está vacío: el elemento no está en el árbol, por lo tanto salimos sin eliminar ningún elemento. (1) Si el valor del nodo raíz es igual que el del elemento que buscamos, estamos ante uno de los siguientes casos: El nodo raíz es un nodo hoja: Si 'Padre' es NULL, el nodo raíz es el único del árbol, por lo tanto el puntero al árbol debe ser NULL. Si raíz es la rama derecha de 'Padre', hacemos que esa rama apunte a NULL. Si raíz es la rama izquierda de 'Padre', hacemos que esa rama apunte a NULL. Eliminamos el nodo, y salimos.
  • 10. Borrar un Elemento: El nodo no es un nodo hoja: Buscamos el 'nodo' más a la izquierda del árbol derecho de raíz o el más a la derecha del árbol izquierdo. Hay que tener en cuenta que puede que sólo exista uno de esos árboles. Al mismo tiempo, actualizamos 'Padre' para que apunte al padre de 'nodo'. Intercambiamos los elementos de los nodos raíz y 'nodo'. Borramos el nodo 'nodo'. Esto significa volver a (1), ya que puede suceder que 'nodo' no sea un nodo hoja. (Ver ejemplo 3) Si el valor del nodo raíz es mayor que el elemento que buscamos, continuaremos la búsqueda en el árbol izquierdo. Si el valor del nodo raíz es menor que el elemento que buscamos, continuaremos la búsqueda en el árbol derecho.
  • 11. Ejemplo 1: Ejemplo 1: Cuando nodo a eliminar es una hoja En el ejemplo, borrar el nodo 3. Localizamos el nodo a borrar, al tiempo que mantenemos un puntero a 'Padre'. Hacemos que el puntero de 'Padre' que apuntaba a 'nodo', ahora apunte a NULL. Borramos el 'nodo'.
  • 12. Ejemplo 2: Ejemplo 2: El nodo a eliminar es incompleto. En el ejemplo, borrar el nodo 4. Localizamos el nodo a borrar, al tiempo que mantenemos un puntero a 'Padre'. Verificamos cual de los hijos del nodo a borrar no es NULO. Enlazamos el puntero del PADRE que apunta al nodo a borrar a el hijo del nodo NO NULO. Borramos el 'nodo'.
  • 13. Ejemplo 3: Ejemplo 3: El nodo a eliminar es completo, pero no es hoja. En el ejemplo, borrar el nodo 17. Busquese el sucesor In-Orden del nodo a borrar: sea N el nodo a borrar y S el sucesor In-Orden de N. Intercambiar la DATA de S con la DATA de N. Eliminar el nodo S según el Caso 1 o 2.
  • 14. Realizar la implementación árbol con los siguientes métodos : vacio() lleno() cant_hojas() cant_nodos() existe() completo() incompleto() insertar() eliminar() Practica:
  • 16. GRACIAS INF-310 Estructura de Datos II