Está en la página 1de 8

Alumno: Samuel Ríos Román

Profesora: OSWALDO ROJAS NIETO

Entregable : Arboles Binarios


Estructuras De Datos

Fecha: 10 de Agosto 2019


1.-Definición.

Los árboles binarios son estructuras de datos muy similares a las listas doblemente enlazadas, en el
sentido que tienen dos punteros que apuntan a otros elementos, pero no tienen una estructura lógica
de tipo lineal o secuencial como aquellas, sino ramificada.

Tienen aspecto de árbol, de ahí su nombre.

Un árbol binario es una estructura de datos no lineal en la que cada nodo puede apuntar a uno o
máximo a dos nodos.
También se suele dar una definición recursiva que indica que es una estructura compuesta por un
dato y dos árboles. Esto son definiciones simples. Este tipo de árbol se caracteriza porque tienen un
vértice principal y de él se desprende dos ramas. La rama izquierda y la rama derecha a las que
también se les conoce como subárboles.
Una de las operaciones mas importantes en una árbol binario, es el recorrido de los mismos.
Recorrer un árbol significa visitar los nodos del árbol en forma sistemática, de forma que todos los
nodos del mismo sean visitados una sola vez. Existen 3 formas de hacer el recorrido y son:

 PREORDEN
 INORDEN
 POSTORDEN

2.-Búsqueda.

La búsqueda en árboles binarios es un método de búsqueda simple, dinámico y eficiente


considerado como uno de los fundamentales en Ciencia de la Computación.

De toda la terminología sobre árboles,tan sólo recordar que la propiedad que define un árbol binario
es que cada nodo tiene a lo más un hijo a la izquierda y uno a la derecha.
Para construir los algoritmos consideraremos que cada nodo contiene un registro con un valor clave
a través del cual efectuaremos las búsquedas.

En las implementaciones que presentaremos sólo se considerará en cada nodo del árbol un valor del
tipo de elemento aunque en un caso general ese tipo estará compuesto por dos:una clave indicando
el campo por el cual se realiza la ordenación y una información asociada a dicha clave o visto de otra
forma,una información que puede ser compuesta en la cual existe definido un orden.

Un árbol binario de búsqueda(ABB) es un árbol binario con la propiedad de que todos los elementos
almacenados en el subárbol izquierdo de cualquier nodo x son menores que el elemento almacenado
en x,y todos los elementos almacenados en el subárbol derecho de x son mayores que el elemento
almacenado en x.

La figura 1 muestra dos ABB construidos en base al mismo conjunto de enteros:

Obsérvese la interesante propiedad de que si se listan los nodos del ABB en inorden nos da la lista
de nodos ordenada.

Esta propiedad define un método de ordenación similar al Quicksort,con el nodo raíz jugando un
papel similar al del elemento de partición del Quicksort aunque con los ABB hay un gasto extra de
memoria mayor debido a los punteros.

La propiedad de ABB hace que sea muy simple diseñar un procedimiento para realizar la búsqueda.
Para determinar si k está presente en el árbol la comparamos con la clave situada en la raíz, r.

Si coinciden la búsqueda finaliza con éxito, si k<r es evidente que k,de estar presente,ha de ser un
descendiente del hijo izquierdo de la raíz,y si es mayor será un descendiente del hijo derecho.
La función puede ser codificada fácilmente de la siguiente forma:

#define ABB_VACIO NULL


#define TRUE 1
#define FALSE 0

typedef int tEtiqueta /*Algun tipo adecuado*/


typedef struct tipoceldaABB{
struct tipoceldaABB *hizqda,*hdrcha;
tEtiqueta etiqueta;
}*nodoABB;
typedef nodoABB ABB;

3.-Inserción en un árbol binario de búsqueda.


A cotniuación vemos la impleemntación dinámica correspondiente a esta especificación. Suponemos
que los elementos de tipo ITEM pueden ser comparados mediante los operadores relacionales
típicos. Si no es este el caso, sería necesario incluir en los procedimientos Insertar(), Eliminar y
Esta(), un parámetro adicional que permita saber cuando un ITEM es mayor, igual, o menor que otro.

Se utiliza además, como auxiliar, la variable OTRO de tipo puntero}


1.Si INFOR < APNODO^.INFO)
entonces
1.1Si(APNODO^.IZQ = NULO)
entonces
Crear(OTRO) {Se crea un nuevo nodo}
Hacer OTRO^.IZQ <- NULO
Hacer OTRO^.DER <- NULO
Hacer OTRO^.INFO <-INFO
Hacer APNODO^.IZQ <- OTRO
si no
Regresar a Insercion_ABB con APNODO^.IZQ e INFOR {Llamada recursiva}
1.2 {Fin del condicional del paso 1.1}
si no
1.3 Si (INFOR > APNODO^.INFO)
entonces
1.3.1 Si (APNODO^.DER = NULO)
entonces
Crear(OTRO) {Se crea un nuevo nodo}
Hacer OTRO^.IZQ <- NULO
Hacer OTRO^.DER <- NULO
Hacer OTRO^.INFO <- INFOR
Hacer NODO^.DER <- OTRO
si no
Regresar a Insercion_ABB con NODO^.DER e INFOR {Llamada recursiva}
4.-Borrado en un árbol binario de búsqueda.
5.-Manejar conceptos y algoritmos para cada tema.

También podría gustarte