Anda di halaman 1dari 9

NOMBRE: JORGE LUIS RODRIGUEZ BUSTAMANTE PROFESOR: ING PABLO PICON ASIGNATURA: ESTRUCTURA DE DATOS TEMA: ARBOLES BINARIOS

INDICE 1. DEFINICION DE ARBOLES BINARIOS

2. TIPOS DE ARBOLES BINARIOS

3. TERMINOLOGIA

4. PROPIEDADES DE LOS ARBOLES BINARIOS

5. CONCLUSIONES

6. BIBLIOGRAFIA

1. DEFINICION DE ARBOLES BINARIOS


Un rbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que: a. b. T es vaco ( en cuyo caso se llama rbol nulo o rbol vaci) o T contiene un nodo distinguido R, llamado raz de T, y los restantes nodos de T forman un par ordenado de rboles binarios disjuntos T1 y T2.

Si T contiene una raz R, los dos rboles T1 y T2 se llaman, respectivamente, subrboles izquierdo y derecho de la raz R. Si T1 no es vaci, entonces su raz se llama sucesor izquierdo de R; y anlogamente, si T2 no es vaci, su raz se llama sucesor derecho de R. Observe que: a. b. B es un sucesor izquierdo y C un sucesor derecho del nodo A. El subrbol izquierdo de la raz A consiste en los nodos B, D, E y F, y el subrbol derecho de A consiste en los nodos C , G, H, J, K

2. TIPOS DE ARBOLES BINARIOS



Un rbol binario es un rbol con raz en el que cada nodo tiene como mximo dos hijos. Un rbol binario lleno es un rbol en el que cada nodo tiene cero o dos hijos. Un rbol binario perfecto es un rbol binario lleno en el que todas las hojas (vrtices con cero hijos) estn a la misma profundidad (distancia desde la raz, tambin llamada altura). A veces un rbol binario perfecto es denominado rbol binario completo. Otros definen un rbol binario completo como un rbol binario lleno en el que todas las hojas estn a profundidad n o n-1, para alguna n.

Un rbol binario es un rbol en el que ningn nodo puede tener ms de dos subrboles. En un rbol binario cada nodo puede tener cero, uno o dos hijos (subrboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.

3. TERMINOLOGIA
La terminologa que por lo regular se utiliza para el manejo de arboles es la siguiente:

Hijo: X es hijo de Y, s y solo s el nodo X es apuntado por Y. Tambin se dice que X es descendiente directo de Y. Padre: X es padre de Y s y solo s el nodo X apunta a Y. Tambin se dice que X es antecesor de Y. Hermano: Dos nodos sern hermanos si son descendientes directos de un mismo nodo. Hoja: Se le llama hoja o terminal a aquellos nodos que no tienen ramificaciones (hijos). Nodo anterior: Es un nodo que no es raz ni terminal. Grado: Es el nmero de descendientes directos de un determinado nodo. Grado de un rbol: Es el mximo grado de todos los nodos del rbol. Nivel: Es el nmero de arcos que deben ser recorridos para llegar a un determinado nodo. Por definicin la raz tiene nivel 1. Altura: Es el mximo nmero de niveles de todos los nodos del rbol.

Peso: Es el nmero de nodos del rbol sin contar la raz. Longitud de camino: Es el nmero de arcos que deben ser recorridos para llegar desde la raz al nodo X. Por definicin la raz tiene longitud de camino 1, y sus descendientes directos longitud de camino 2 y as sucesivamente.

Ejemplo: La figura muestra un rbol general T con 13 nodos, A,B,C,D,E,F,G,H,J,K,L,M,N A menos de que se indique lo contrario, la raz de un rbol T es el nodo en lo alto del diagrama, y los hijos de un nodo estn ordenados de izquierda a derecha. As, A es la raz de T y A tiene tres hijos; el primer hijo B, el segundo C y el tercero D. se observa que: a. b. c. d. El nodo C tiene tres hijos. Cada uno de los nodos B y K tienen dos hijos. Cada uno de los nodos D y H tiene un hijo. Los nodos E,F,G,L,J,M y N no tienen hijos.

El ltimo grupo de nodos, los que no tienen hijos, se llaman nodos terminales. Un rbol binario T no es un caso especial de un rbol general T: los rboles binarios y los rboles generales son dos cosas distintas. Las dos diferencias bsicas son:

a. b.

un rbol binario T puede estar vaci, pero un rbol general T no es vaci. Suponga que un nodo N tiene un solo hijo. Entonces el hijo se distingue por ser el izquierdo o el derecho en un rbol binario T, mientras que no existe esa distincin en un rbol general T.

rboles Binarios de bsqueda


Esta seccin discute una de las estructuras de datos ms importantes de la informtica, el rbol binario de bsqueda. Esta estructura permite buscar y encontrar un elemento con una media de tiempo de ejecucin f (n) = 0 ( log2 n), tambin permite insertar y borrar elementos fcilmente. Esta estructura contrasta con las siguientes estructuras: a. b. Array lineal ordenado. Aqu se puede buscar y encontrar un elemento con un tiempo de ejecucin f(n) = (log2n), pero es costoso el insertar y borrar elementos. Lista enlazada. Aqu se puede insertar y borrar elementos fcilmente, pero es costoso el buscar y encontrar un elemento, ya que se debe usar una bsqueda secuencial.

Aunque cada nodo de un rbol binario de bsqueda puede contener un registro entero de datos, la definicin del rbol binario depende de un campo dado cuyos valores son distintos y deben estar ordenados. Supongamos que T es un rbol binario. Entonces T se dice que es un rbol binario de bsqueda ( o rbol binario ordenado) si cada nodo N de T tiene la siguiente propiedad: el valor de N es mayor que cualquier valor del subrbol izquierdo de N y es menor que cualquier valor del subrbol derecho de N. ( no es difcil ver que esta propiedad garantiza el recorrido inorden de T dar una lista ordenada de los elementos de T) .

4. PROPIEDADES DE LOS ARBOLES BINARIOS


De la especificacin anterior se deducen las siguientes formas cannicas para los trminos del tipo ArbolB: Crear Arbol_binario(r, I, D) siendo I y D dos trminos del mismo tipo tambin en forma cannica. A partir de la especificacin, y como se hizo en casos anteriores, se pueden definir los distintos conceptos relacionados con la nocin de rbol binario: ! Un primer grupo corresponde a las nociones de igualdad de forma, nmero de nodos y altura. Igual_Forma: ArbolB ArbolB Lgico ecuaciones Igual_Forma(Crear, a) == Es_Vaco(a) Igual_Forma(Arbol_binario(r, i, d), a)== SI Es_Vaco(a) ENTONCES F SI NO Igual_Forma(i, Hijo_izq(a)) and Igual_Forma(d, Hijo_dch(a)) Nmero_Nodos: ArbolB ecuaciones Nmero_Nodos(Crear) == 0 Nmero_Nodos(Arbol_binario(r, i, d)) == 1 + Nmero_Nodos(i) + Nmero_Nodos(d) Altura: ArbolB ecuaciones Altura(Crear) == 0; Altura(Arbol_binario(r, i, d)) == 1 + Mximo(Altura(i), Altura(d)); ! Un segundo grupo aparece al considerar una relacin de igualdad entre los valores del tipo Elemento: genrico Elemento operacin =: Elemento Elemento Lgico Entonces se puede hablar de igualdad de rboles y de la relacin de existencia de un elemento en un rbol. Est: Elemento ArbolB Lgico ecuaciones Est(e, Crear) == F Est(e, Arbol_binario(r, i, d)) == (e = r) or Est(e, i) OR Est(e, d) Igual: ArbolB ArbolB Lgico ecuaciones Igual(Crear, a) == Es_Vaco(a) Igual(Arbol_binario(r, i, d), a)== SI Es_Vaco(a) ENTONCES F SI NO (r=Raz(a)) and Igual(i,Hijo_izq(a)) and Igual(d,Hijo_dch(a)) Como vemos, aqu s nos importa el orden en que se disponen los subrboles. ! Un tercer grupo aparece al considerar las posibles formas de recorrer los nodos de un rbol. Con ayuda de las especificaciones de listas funcionales podemos especificar distintas operaciones tipicas de recorrido de rboles como funciones de rboles binarios en listas de nodos. Nivel: ArbolB Lista ecuaciones Nivel(0, a) == Crear Nivel(suc(n), Crear) == Crear Nivel(suc(n), Arbol_binario(r, i, d)) == SI n=0 ENTONCES Insertar(r, Crear) SI NO Concatenar(Nivel(n, i), Nivel(n, d)) Preorden, Inorden, Postorden: ArbolB Lista ecuaciones Preorden(Crear) == Crear

Preorden(Arbol_binario(r, i, d)) == Construir(r, Concatenar(Preorden(i), Preorden(d))) Inorden(Crear) == Crear Inorden(Arbol_binario(r, i, d)) == Concatenar(Inorden(i), Construir(r, Inorden(d))) Postorden(Crear) == Crear Postorden(Arbol_binario(r, i, d)) == Concatenar(Concatenar(Postorden(i), Postorden(d)), Construir(r, Crear)) ! Se pueden especificar predicados (para rboles de elementos comparables) que determinen si dichos elementos estn distribuidos en el rbol con arreglo a alguna de las ordenaciones o recorridos; para ello empleamos el predicado Est_Ordenada, que se supone definido para listas de nodos. Preordenado, Inordenado, Postordenado: ArbolB Lgico ecuaciones Preordenado(a) == Est_Ordenada(Preorden(a)) Inordenado(a) == Est_Ordenada(Inorden(a)) Postordenado(a) == Est_Ordenada(Postorden(a)) ! Predicados para rbol lleno, rbol completo y rbol equilibrado en altura. Es_Lleno, Es_Completo, Es_Equilibrado: ArbolB Lgico ecuaciones Es_Lleno(Crear) == V Es_Lleno(Arbol_binario(r, i, d)) == (Altura(i) = Altura(d)) and Es_Lleno(i) and Es_Lleno(d) Es_Completo(Crear) == V Es_Completo(Arbol_binario(r, i, d)) == (Altura(i) = Altura(d)) and Es_Lleno(i) and Es_Completo(d)) or (Altura(i) = 1+Altura(d)) and Es_Completo(i) and Es_Lleno(d)) Es_Equilibrado(Crear) == V Es_Equilibrado(Arbol_binario(r, i, d)) == (-1 # Altura(i) - Altura(d) # 1 ) and Es_Equilibrado(i) and Es_Equilibrado(d) Utilizando estas definiciones se pueden demostrar, por induccin estructural, una serie de propiedades tpicas de los rboles binarios: i Para a: ArbolB y j: se cumple 0 < j # Altura(a) 6 Longitud(Nivel(j, a)) # 2j-1 Demostracin: j Para a == Arbol_binario(r, Crear, Crear), la implicacin es trivialmente cierta. j (h. i.) Longitud(Nivel(j, i)) # 2j-1, y Longitud(Nivel(j, d)) # 2j-1 j (p. i.) Para a == Arbol_binario(r, i, d), suponemos que se cumple para i y d. Longitud(Nivel(Suc(j), Arbol_binario(r, i, d))) == SI j = 0 ENTONCES Longitud(Insertar(r, Crear)) SI NO Longitud(Concatenar(Nivel(j, i), Nivel(j, d))) == SI j = 0 ENTONCES 1 SI NO Longitud(Nivel(j, i)) + Longitud(Nivel(j, d)) y por la h. i. Longitud(Nivel(j, i)) + Longitud(Nivel(j, d)) # 2j-1 + 2j-1 = 2j podemos concluir pues, que, en cualquiera de los dos casos: Longitud(Nivel(Suc(j), Arbol binario(r, i, d))) # 2Suc(j)-1 i En particular, para a: ArbolB y j: se cumple: (Es_Lleno(a) and (0 < j # Altura(a))) 6 Longitud(Nivel(j, a)) = 2j-1

5. CONCLUSIONES
De este trabajo se podra decir que un rbol binario se define como un conjunto finito de elementos llamados nodos. En estos casos se puede usar terminologa de relaciones familiares para descubrir las relaciones entre los nodos de un rbol; y que un rbol puede ser implementado fcilmente en una computadora. Es bueno hacer nfasis en esto ya que se puede saber mucho sobre lo que tiene que ver con los rboles; entre las cosas que podemos mencionar se encuentra la raz, los nodos de un rbol y la diferencia entre nodos sucesores y nodos terminales, como se muestran en el contenido del trabajo.

6. BIBLIOGRAFIA
http://www.lcc.uma.es/~galvez/ftp/tad/tadtema4.pdf http://es.wikipedia.org/wiki/%C3%81rbol_binario#M.C3.A9todos_para_almacenar_.C3.A1rboles_binarios http://www.monografias.com/trabajos36/arboles/arboles2.shtml#binarios

PSEUDOCODIGO
En la clase rbol binario se encuentra los mtodos rbol suma uno pblico y otro privado, el que debes llamar desde la clase donde est el main es el publico es decir el que recibe el rbol binario por parmetro, estas son:
//************************************ // clase NodoArbolBinario //************************************ public class NodoArbolBinario { private int info = 0; private NodoArbolBinario derecho = null; private NodoArbolBinario izquierdo = null; public NodoArbolBinario ( int x ) { this.info = x; this.derecho = null; this.izquierdo = null; } public NodoArbolBinario getDerecho(){ return this.derecho; } public void setDerecho(NodoArbolBinario derecho){ this.derecho = derecho; } public int getInfo(){ return this.info; } public void setInfo(int info){ this.info = info; }

public NodoArbolBinario getIzquierdo(){ return this.izquierdo; } public void setIzquierdo(NodoArbolBinario izquierdo){ this.izquierdo = izquierdo; } } //************************************ // clase ArbolBinario //************************************ public class ArbolBinario { private NodoArbolBinario raiz = null; private NodoArbolBinario padre = null; private boolean centinela = false, sw = false; public ArbolBinario () { } public NodoArbolBinario adicionar( int x ) { NodoArbolBinario p = new NodoArbolBinario ( x ), r = null; if ( this.raiz == null ) { this.raiz = p; } else { NodoArbolBinario q = raiz; while ( q != null ) { r = q; if ( x >= q.getInfo() ) { q = q.getDerecho(); } else { q = q.getIzquierdo(); } }

} if ( x >= r.getInfo() ) { r.setDerecho( p ); } else { r.setIzquierdo( p ); } return p; } public ArbolBinario arbolSuma(ArbolBinario tree){ ArbolBinario res = new ArbolBinario(); arbolSuma(res,tree.raiz); return res; } private int arbolSuma(ArbolBinario res, NodoArbolBinario p){ if ( p == null ){ return 0; } else { int sum = p.getInfo(); NodoArbolBinario aux = res.adicionar(sum); sum += arbolSuma(res, p.getIzquierdo() ); sum += arbolSuma(res, p.getDerecho() ); aux.setInfo(sum); return sum; } } }

Anda mungkin juga menyukai