Professional Documents
Culture Documents
Un bosque es una unin disjunta de rboles. Un rbol a veces recibe el nombre de rbol libre.
Definiciones
Un rbol es un grafo simple unidireccional G que satisface alguna de las siguientes condiciones equivalentes: G es conexo y no tiene ciclos simples. G no tiene ciclos simples y, si se aade alguna arista se forma un ciclo simple. G es conexo y si se le quita alguna arista deja de ser conexo. G es conexo y el grafo completo de 3 vrtices K3 no es un menor de G.
Dos vrtices cualquiera de G estn conectados por un nico camino simple. Si G tiene muchos vrtices, n, entonces las definiciones anteriores son tambin equivalentes a cualquiera de las siguientes condiciones: G es conexo y tiene n 1 aristas. G no tiene aristas simples y tiene n 1 aristas. La cantidad de hojas de un rbol siempre es mayor o igual a la mitad de la totalidad de los nodos. Un grafo unidireccional simple G es un bosque si no tiene ciclos simples. Un rbol dirigido es un grafo dirigido que sera un rbol si no se consideraran las direcciones de las aristas. Algunos autores restringen la frase al caso en el que todos las aristas se dirigen a un vrtice particular, o todas sus direcciones parten de un vrtice particular. Un rbol recibe el nombre de rbol con raz si cada vrtice ha sido designado raz, en cuyo caso las aristas tienen una orientacin natural hacia o desde la raz. Los rboles con raz, a menudo con estructuras adicionales como orden de los vecinos de cada vrtice, son una estructura clave en informtica; vase rbol (programacin). Un rbol etiquetado es un rbol en el que cada vrtice tiene una nica etiqueta. Los vrtices de un rbol etiquetado de n vrtices reciben normalmente las etiquetas {1,2, ..., n}. Un rbol regular u homogneo es un rbol en el que cada vrtice tiene el mismo grado.
Propiedades
Todo rbol es a su vez un grafo bipartito. Todo rbol con slo un conjunto numerable de vrtices es adems un grafo plano. Todo grafo conexo G admite un rbol de expansin, que es un rbol que contiene cada vrtice de G y cuyas aristas son aristas de G. Dado n vrtices etiquetados, hay n n2 maneras diferentes de conectarlos para construir un grafo. El resultado se llama frmula de Cayley. El nmero de rboles con n vrtices de grado d1,d2,...,dn es:
que es un coeficiente multinomial. Contar el nmero de rboles no etiquetados es un problema complicado. De hecho, no se conoce ninguna frmula para el nmero de rboles t(n) con n vrtices (debe entederse aqu el nmero de rboles diferentes salvo isomorfismo de grafos). Los primerlos valores de t(n) son 1, 1, 1, 1, 2, 3, 6, 11, 23, 47, 106, 235, 551, 1301, 3159, ... (sucesin A000055 en OEIS). Otter (1948) prob que
Una frmula ms exacta para el comportamiento asinttico de t(n) implica que hay dos nmeros y ( 3 y 0.5) tales que:
En ciencias de la computacin, un rbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener ms de dos hijos (de ah el nombre "binario"). Si algn hijo tiene como referencia a null, es decir que no almacena ningn dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los rboles binarios son los rboles binarios de bsqueda, los montculos binarios y Codificacin de Huffman.
Implementacin en C
Un rbol binario puede declararse de varias maneras. Algunas de ellas son: Estructura con manejo de memoria dinmica, siendo puntA el puntero que apunta al rbol de tipo tArbol:
typedef struct nodo { int clave; struct nodo *izdo, *dcho; }Nodo;
En el caso de un rbol binario casi-completo (o un rbol completo), puede utilizarse un sencillo arreglo de enteros con tantas posiciones como nodos deba tener el rbol. La informacin de la ubicacin del nodo en el rbol es implcita a cada posicin del arreglo. As, si un nodo est en la posicin i, sus hijos se encuentran en las posiciones 2i+1 y 2i+2, mientras que su padre (si tiene), se encuentra en la posicin truncamiento((i-1)/2) (suponiendo que la raz est en la posicin cero). Este mtodo se beneficia de un almacenamiento ms compacto y una mejor localidad de referencia, particularmente durante un recorrido en preorden. La estructura para este caso sera por tanto:
int rbol[NUMERO_DE_NODOS];
Recorridos en profundidad
El mtodo de este recorrido es tratar de encontrar de la cabecera a la raz en nodo de unidad binaria. Ahora pasamos a ver la implementacin de los distintos recorridos: Recorrido en preorden En este tipo de recorrido se realiza cierta accin (quizs simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subrbol izquierdo y cuando se haya concluido, el subrbol derecho. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo raiz, nodo izquierda, nodo derecha. En el rbol de la figura el recorrido en preorden sera: 2, 7, 2, 6, 5, 11, 5, 9 y 4
Un rbol binario sencillo de tamao 9, 4 niveles y altura 3 (altura = mximo nivel - 1), con un nodo raz cuyo valor es 2. Recorrido en postorden En este caso se trata primero el subrbol izquierdo, despus el derecho y por ltimo el nodo actual. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda, nodo derecha, nodo raiz. En el rbol de la figura el recorrido en postorden sera: 2, 5, 11, 6, 7, 4, 9, 5 y 2. Recorrido en inorden En este caso se trata primero el subrbol izquierdo, despus el nodo actual y por ltimo el subrbol derecho. En un ABB este recorrido dara los valores de clave ordenados de menor a mayor. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda,nodo raiz,nodo derecha. En el rbol de la figura el recorrido en inorden sera: 2, 7, 5, 6, 11, 2, 5, 4, 9.