Académique Documents
Professionnel Documents
Culture Documents
Arboles
ARBOLES
Definicin formal: conjunto finito T de uno o ms nodos tales que:
a) existe un nodo especialmente designado, llamado raz del rbol, raz(T); y b) Los restantes nodos (excluyendo la raz), estn distribudos en m >= 0 conjuntos disjuntos T1,.. ,Tm, y cada uno de estos conjuntos es, a su vez, un rbol. Los rboles T1,.. ,Tm son llamados subrboles de la raz.
Programacin II, Universidad Catlica del Uruguay 2
2012
Raz
2012
ARBOLES
Otra definicin formal y recursiva: Una estructura de rbol, con tipo base T, es
La estructura vaca o Un nodo del tipo T con un nmero finito de estructuras arborescentes disjuntas asociadas, del tipo base T, llamadas subrboles
De acuerdo a esta definicin, similar a la correspondiente para listas, puede verse que stas son un caso particular de los rboles.
2012
qu es un Arbol?
En ciencias de la computacin, un rbol es un modelo abstracto de una estructura jerrquica Un rbol consiste de nodos con una relacin padre-hijo Aplicaciones:
Computadoras UCU
Ventas
Produccin
I&D
Uy
Internacional
Laptops
Desktops
Europa
Asia
Amrica
2012
2012
Terminologa de Arboles
Raz: nodo sin padre (A) Nodo interno: nodo con por lo menos un hijo (A, B, C, F) Nodo externo (hoja): nodo sin hijos(E, I, J, K, G, H, D) Ancestros de un nodo: padre, abuelo, bisabuelo, etc... Nivel o Profundidad de un nodo: nmero de ancestros Altura de un rbol: mxima profundidad de un nodo(3) Descendiente de un nodo: hijo, nieto, bisnieto, etc. E F G H Subrbol : rbol que consiste en un nodo y sus descendientes A
subrbol
7
2012
ARBOLES
Nivel 3
Nivel 2
E C
F C
Nivel 1 Nivel 0
2012
B A
B A
2012
ARBOLES
Representacin :
La raz arriba, las hojas abajo. Se dice que cada raz es el padre de las races de sus subrboles, los cuales son llamados hermanos. Los subrboles son llamados hijos de su padre. La raz del rbol total no tiene padre. Ancestros y descendientes.
Arboles binarios
2012
10
...
A1 A2 Ak
2012 Programacin II, Universidad Catlica del Uruguay 11
2012
12
Recorrida en Preorden
En un recorrido en preorden, un nodo es visitado antes que sus descendientes Aplicacin: imprimir un documento estructurado
1
Informe TDAArbol
2
1. Introduccin
5
2. Mtodos
9
Casos
3
1.1 General
2012
4
1.2 Aplicacin
6
2.1 Insertar
7
2.2 Buscar
8
2.3 Eliminar
13
Recorrida en Postorden
En un recorrido en postorden, un nodo es visitado despus de sus descendentes Aplicacin: calcular el espacio usado por archivos en un directorio y sus subdirectorios 9
p2/
8 3
trabajos/
7
programas/ todo.txt 1K
1
h1c.doc 3K
2012
2
h1nc.doc 2K
4
DDR.java 10K
5
Stocks.java 25K
6
Robot.java 20K
14
2012
15
Arboles Binarios
Un Arbol Binario es un Arbol con las siguientes propiedades:
Cada nodo interno tiene como mximo dos hijos (exactamente dos para rboles binarios completos) Los hijos de un nodo son un par ordenado
Applicaciones:
Expresiones aritmticas Procesos de decisin Bsqueda
Los hijos de un nodo interno se denominan Hijo Izquierdo e Hijo Derecho Definiciones alternativas:
Un rbol con un slo nodo, o un rbol cuya raz tiene un par ordenado de hijos, cada uno de los cuales es a su vez un rbol binario Conjunto finito de nodos, que puede estar vaco o consistir de una raz y dos rboles binarios disjuntos, llamados subrbol izquierdo y derecho de la raz.
H
2012 Programacin II, Universidad Catlica del Uruguay
I
16
+ 2 a
2012
1
17
comida rpida?
Si No
qu tal un caf?
Si
cuentas de gastos?
Si
No
No
Starbucks
2012
La Pasiva
La Vaca
Nuevo Garca
18
6 2 1 3 4 5 7 8
Algoritmo inOrden(v) Si tieneHijoIzquierdo(v) inOrden (HijoIzquierdo (v)) visitar(v) Si tieneHijoDerecho(v) inOrden (HijoDerecho(v))
2012
19
Algoritmo printExpression(v) Si tieneHijoIzquierdo (v) imprimir(() Imprimir ( antes de recorrer el subrbol izquierdo printExpression(HijoIzquierdo(v)) Imprimir ) despus de imprimir(v.element ()) recorrer el subrbol derecho Si tieneHijoDerecho (v) + printExpression (HijoDerecho (v)) print ()) a 1
Programacin II, Universidad Catlica del Uruguay 20
2012
Mtodo recursivo que retorna el valor de un subrbol Al visitar un nodo interno, combina los valores de los subarboles
+ 2 5
2012
Algoritmo evalExpr(v) Si esHoja(v) devolver v.element () sino x evalExpr(HijoIzquierdo (v)) y evalExpr(HijoDerecho(v)) operador contenido en v devolver x y
1
Programacin II, Universidad Catlica del Uruguay 21
n es descendiente de m
n est a la izquierda de m
n est a la derecha de m
2012
23
2012
24
para cada nodo ti todas las claves del subrbol izquierdo de ti son menores que la clave de ti y todas las claves del rbol derecho son mayores.
Si el rbol tiene n nodos y est balanceado, su altura ser de log(n) Una bsqueda en este caso puede tomar log(n) comparaciones o menos.
2012 Programacin II, Universidad Catlica del Uruguay 25
ArbolBinario.Buscar(unaEtiqueta) COM resultado = nulo si Raiz <> nulo ENTONCES resultado = Raiz.Buscar(unaEtiqueta) Devolver resultado FIN
2012
26
2012
27
2012
28
2012
29
.
Jorge
.
Pedro
.
Ana
.
Mara Pablo
.
Walter
CrearArbol AbrirArchivo MIENTRAS NO FIN ARCHIVO HACER LEER(archivo, palabra); Arbol.Insertar(palabra); end;
2012
31
type PLinea = ^TLinea; TLinea = record linea : word; Proximo: PLinea; end; PPalabra = ^TPalabra; TPalabra = record clave: string; primero, ultimo: PLinea; izquierdo, derecho: PPalabra; end; var LineaActual: word; PalabraActual: string; 2012
15 3
15
13
18
18
(a)
10 10
(b)
8
18
18
18
(c)
2012
(d)
Programacin II, Universidad Catlica del Uruguay
(e)
34
eliminacin
2012
35
Eliminacin
Eliminacin del nodo 5 con 1 hijo: (a) antes y (b) despus
2012
36
Eliminacin
Eliminacin del nodo 2 con dos hijos: (a) antes y (b) despus
2012
37
Arbolbin.Max COM
RESULTADO = nulo SI Raiz <> nulo RESULTADO = Raiz.encontrarMax devolver RESULTADO FIN NodoArbolBinario.encontrarMin COM RESULTADO = THIS SI HijoIzq <> nulo RESULTADO = HijoIzq.encontrarMin devolver RESULTADO FIN NodoArbolBinario.encontrarMax COM RESULTADO = THIS SI HijoDer <> nulo RESULTADO = HijoDer.encontrarMax devolver RESULTADO Programacin II, Universidad Catlica del Uruguay 2012 FIN
38
2012
42
2012
43
2012
44
4 8 16 17 18 9 19 20 10 21
5 11 22 23 24 12 25
6 13 14
7 15
2012
45
2012
46
2012
48
Arboles Balanceados
Un rbol est balanceado si y slo si para cada nodo las alturas de sus dos subrboles difieren a lo sumo en 1. Asegura un O log(n) en el peor caso para las tres operaciones: bsqueda, insercin y eliminacin. Se demuestra con la ayuda de los rboles de Fibonacci.
Programacin II, Universidad Catlica del Uruguay 49
2012
2012
50
2012
51
T2
2
T3
3
T4
5
1 1
4 2 1
2012
52
ARBOLES BALANCEADOS
Desbalanceados
A B 2 6
B 8
A 10
Balanceados
B A
B
2012
53
ARBOLES BALANCEADOS
Insercin balanceada.
5 5 7 4 7 2
4 2
7 1
4
54
1
2012 Programacin II, Universidad Catlica del Uruguay
ARBOLES BALANCEADOS
Insercin balanceada (cont.)
5 4
2 1 3 4
7 1
2 3
5 7
5 7
2 1 3 5
6 7
3 6
2012
55
Arboles Balanceados
Un rbol est balanceado si y slo si para cada nodo las alturas de sus dos subrboles difieren a lo sumo en 1. Asegura un O log(n) en el peor caso para las tres operaciones: bsqueda, insercin y eliminacin. Se demuestra con la ayuda de los rboles de Fibonacci.
Programacin II, Universidad Catlica del Uruguay 56
2012
AVL
Una insercin o eliminacin puede destruir el balance Se debe revisar la condicin de balance y corregir si es necesario Despus de la Insercin, slo los nodos que se encuentran en el camino desde el punto de insercin hasta la raz pueden tener el balance alterado Si se repara correctamente el equilibrio del nodo desequilibrado ms profundo, se recupera el equilibrio de todo el rbol
2012
57
en en en en
el el el el
izquierdo del hijo izquierdo de X derecho del hijo izquierdo de X izquierdo del hijo derecho de X derecho del hijo derecho de X
2012
58
a) Antes de la rotacin
2012
b)Despus de la rotacin
59
a) Antes de la rotacin
b)Despus de la rotacin
2012
60
a) Antes de la rotacin
2012
b)Despus de la rotacin
61
a) Antes de la rotacin
2012
b)Despus de la rotacin
62
a) Antes de la rotacin
2012
b)Despus de la rotacin
63
a) Antes de la rotacin
b)Despus de la rotacin
2012
64
a) Antes de la rotacin
b)Despus de la rotacin
2012
65
CASO 1 LL TElementoAB rotacionLL ( TElementoAB k2 ) { TElementoAB k1 = k2.hijoIzq; k2. hijoIzq = k1.hijoDer; k1. hijoDer = k2; return k1; } CASO 4 RR TElementoAB rotacionRR(TElementoAB k1 ) { TElementoAB k2 = k1.hijoDer; k1. hijoDer = k2.hijoIzq; k2.hijoIzq = k1; return k2; }
2012 Programacin II, Universidad Catlica del Uruguay 66
CASO 2 LR TElementoAB rotacionLR ( TElementoAB k3 ) { k3. hijoIzq = rotacionRR( k3. hijoIzq ); return rotacionLL( k3 ); }
CASO 3 RL TElementoAB rotacionRL ( TElementoAB k1 ) { k1. hijoDer = rotacionLL( k1. hijoDer ); return rotacionRR( k1 ); }
2012
67
Muestre el resultado de insertar en un rbol AVL las siguientes claves, en el orden indicado, 2,1,4,5,9,3,6, 7 mostrando la evolucin del rbol. Luego muestre el resultado de eliminar las clave 4, 5 y 9, mostrando la evolucin Insertar en un rbol AVL las siguientes claves, en el orden indicado
1,88,77,4,5,9,18,56,33,21,45,99,22
mostrando la evolucin del rbol. Luego eliminar las clave 18, 77, 1 y 45 mostrando los pasos.
2012
68
2012
69
ARBOLES
Otros conceptos: similaridad
Se dice que dos rboles binarios, T y T son similares si tienen la misma estructura:
a) ambos estn vacos o b) ambos no estn vacos y sus subrboles izquierdo y derecho son respectivamente similares. existe una correspondencia uno a uno entre los nodos de T y T que preserva la estructura: Si los nodos u1 y u2 en T corresponden respectivamente a u1 y u2 en T, entonces u1 est en el subrbol izquierdo de u2 sii u1 est en el subrbol izquierdo de u2, siendo vlida la afirmacin para los subrboles derechos.
2012
70
ARBOLES
Otros conceptos: equivalencia
Se dice que dos rboles binarios, T y T son equivalentes si son similares y adems los nodos correspondientes contienen la misma informacin. Sea info(u) la informacin contenida en el nodo u . Los rboles son equivalentes sii
a) ambos son vacos b) ambos no son vacos, info(raz(T)) = info(raz(T)) y los subrboles izquierdo y derecho son respectivamente equivalentes.
2012
71
ARBOLES
A B C 1 W X Y
2012
A B
C 2
D A B
C 4
D
72
ARBOLES, EQUIVALENCIA
Teorema: Sean los nodos de los rboles binarios T y T u1,u2,...,un y u1,u2,....,un en preorden . Para todo nodo u, sea l(u) = 1 si u tiene un subrbol izquierdo no vaco l(u) = 0 en caso contrario r(u) = 1 si u tiene un subrbol derecho no vaco r(u) = 0 en caso contrario Entonces T y T son similares si y slo si n = n y l(uj) = l(uj) r(uj) = r(uj) para 1 <= j <= n T y T son equivalentes si y slo si, adems, info(uj) = info(uj) para 1 <= j <= n
2012 Programacin II, Universidad Catlica del Uruguay 73
ARBOLES B (MULTICAMINO)
Son usados en general como estructuras de bsqueda a gran escala. El almacenamiento de la informacin se realiza en memoria secundaria. Los nodos son pginas y los punteros a los hijos son direcciones de disco a otras pginas. Cada nodo contiene varias claves (elementos) y tiene varios hijos.
2012
74
ARBOLES B (MULTICAMINO)
Definicin: Se dice que un rbol B es de orden n, si:
1.- Cada pgina contiene a lo sumo 2n claves (elementos). 2.- Cada pgina, excepto la raz, contiene n elementos como mnimo. 3.- Las pginas que no son hojas, tienen m+1 descendientes, siendo m el nmero de claves de la pgina. 4.- Todas las pginas de hoja aparecen en el mismo nivel.
Programacin II, Universidad Catlica del Uruguay 75
2012
ARBOLES B (MULTICAMINO)
Representacin de una pgina (nodo):
p0
k1
p1
k2
p2 . . . . . . pm-1
km
pm
2012
76
ARBOLES B (MULTICAMINO)
El criterio de bsqueda de una clave x en el rbol es cargar la primer pgina y buscar a x en ella. Si la bsqueda fracasa, se dar una de las siguientes situaciones:
1.- ki < x < ki+1 , con 1 =< i < m , hay que continuar la bsqueda en la pgina apuntada por pi . 2.- km < x , hay que continuar la bsqueda en la pgina apuntada por pm. 3.- x < k1 , hay que continuar la bsqueda en la pgina apuntada por p0 .
2012
77
ARBOLES B (MULTICAMINO)
El criterio de insercin:
1.
2.
3.
Si el nmero de elementos en la pgina es m < 2n , se inserta directamente. Si la pgina ya est llena, las 2n+1 claves resultantes se dividen en dos pginas, pasando la clave central a la pgina antecesora. Esto asegura el balance, y hace que los desbordes se propaguen hacia arriba. El rbol B crece de las hojas a la raz.
Programacin II, Universidad Catlica del Uruguay 78
2012
Ejercicio Arbol B
Defina Arbol B, comente sus principales caractersticas y describa una estructura de datos para su implementacin. Describa (a alto nivel) un algoritmo para insertar un elemento en un rbol B. Dadas las siguientes claves, insrtelas en un rbol B de orden 2 (o grado 5) mostrando todos los pasos 3,7, 41, 56, 4, 23, 8, 24, 97, 31, 17, 15, 16, 2, 25, 1, 6 y luego proceda a eliminar las siguientes, en el orden indicado (mostrando tambin todos los pasos)
16, 24, 7.
2012 Programacin II, Universidad Catlica del Uruguay 79
ARBOL B
TElemento Clave : Tclave; Pagina : PPagina; PPagina : referencia (puntero) a TPagina TPagina P0 : PPagina; indice : [0..2*n]; elementos : array[1..2*n] de TElemento
2012
80
ARBOLES B - INSERCIN
BuscaInserta (laClave : TClave; p :PPagina ; h: boolean; elem: Telemento);
COM SI p = nulo ENTONCES InsertarClave(pone h en true) SINO CON p HACER BuscaClaveEnPgina SI EncontrClave ENTONCES ProcesarDatos SINO BuscaInserta( x, pi, h, u) SI h ENTONCES SI m < 2n ENTONCES insertar u en la pgina y hacer h=false SINO Dividir pgina y Subir el elemento de la mitad FIN
2012 Programacin II, Universidad Catlica del Uruguay 81
TDA ARBOL B
TArbolB
Buscar (unaClave: TClave): TPagina //Dada una clave, la operacin devuelve la pgina en la que se encuentra; si la clave no est en el rbol se devuelve la pgina nula. Insertar (unaClave: TClave): boolean // Devuelve verdadero en caso de que la insercin haya sido exitosa, y falso en caso contrario. Eliminar (unaClave: TClave): boolean //Devuelve verdadero en caso de que la eliminacin haya sido exitosa, y falso en caso contrario.
TPagina (bsicas)
esHoja(): boolean // Devuelve verdadero en caso de ser hoja, y falso en caso contrario. esRaiz (): boolean // Devuelve verdadero en caso de ser la raz, y falso en caso contrario. estaLlena (): boolean // Devuelve verdadero en caso de no tener lugar para insertar un elemento en la pgina, y falso en caso contrario. subOcupada (): boolean // Devuelve verdadero en caso de tener n-1 elementos, y falso en caso contrario. buscarEnPgina(unaClave: TClave): TPagina // En caso de que la clave buscada est en la pgina devuelve la propia pgina, en caso contrario devuelve la pgina en la cual se debera seguir buscando. InsertarEnPgina (unElemento: TElemento): boolean // Devuelve verdadero si se puede insertar adecuadamente el elemento en la pgina, y falso en caso contrario. eliminarDePagina (unaClave: TClave): TElemento // Elimina y devuelve el elemento cuya clave es UnaClave, y el elemento nulo en caso que la clave no se encuentre en la pgina. crearPgina (): TPagina // Devuelve una pgina vaca, sin elementos. distribuirElementos (otraPgina: TPagina): TElemento //Deja la mitad menos uno de los elementos en la pgina, la otra mitad en la OtraPgina, y devuelve el elemento con la clave del medio.
(Avanzadas) buscar (unaClave: TClave): TPagina // busca la clave en el subrbol del cual la pgina es raz; si la clave est devuelva la pgina en la que se encuentra, y si no est devuelve nulo insertar (unaClave: TClave): boolean // Devuelve verdadero en caso de que la insercin haya sido exitosa, y falso en caso contrario. eliminar (unaClave: TClave): boolean // Devuelve verdadero en caso de que la eliminacin haya sido exitosa, y falso en caso contrario. TElemento: crearElemento (unaClave: TClave): TElemento setPaginaHija (unaPagina: TPagina): boolean setClave (unaPagina: TPagina): boolean
2012
82
unelemento crearElemento( ) paginaSiguiente buscarEnPgina(unaClave) Si paginaSiguiente = THIS entonces Devolver falso // esta clave ya existe! Sino Si paginaSiguiente = nulo entonces // hay que insertar en la actual unElemento.SetClave(unaClave) Devolver verificaEInserta(unElemento) Sino // seguimos buscando unElemento PginaSiguiente.Insertar(UnaClave) Si unElemento <> nulo entonces Devolver verificaEInserta(UnElemento) Sino Devolver nulo Fin si Finsi Fin si FIN
2012
84
ARBOLES B, ELIMINACION
Dos circunstancias diferentes:
El elemento a suprimir se halla en una pgina de hoja; entonces el algoritmo para su eliminacin es fcil y sencillo. El elemento no se encuentra en una pgina de hoja; hay que sustituirlo por uno de los dos elementos lexicogrficamente contiguos, que resultan estar en las pginas de hoja. En este caso, se debe escoger un criterio de seleccin del candidato a sustituto: el ms a la derecha del subrbol izquierdo, o el ms a la izquierda del subrbol derecho.
Programacin II, Universidad Catlica del Uruguay 86
2012
ARBOLES B, ELIMINACION
El elemento no est en una pgina de hoja:
Bajar por el apuntador izquierdo del elemento a eliminar. Hasta llegar a la pgina de hoja, bajar por los apuntadores de la extrema derecha. Sea P la pgina de hoja a la que se llega. Reemplazar el elemento a eliminar por el del extremo derecho de P y reducir el tamao de P en uno. La disminucin del tamao de P debe acompaarse de la verificacin del tamao con el que queda la pgina. Si el nmero de elementos resultante es menor que la cantidad mnima autorizada (m < n ) , se produce Subocupacin.
2012
87
ARBOLES B, ELIMINACION
Administracin de la sub-ocupacin
El nico recurso consiste en tomar o anexar un elemento a partir de una de las pginas vecinas, digamos Q. A la estrategia de distribuir de manera uniforme los elementos en las pginas vecinas P y Q se le llama Balanceo de Pginas . Si Q ya tena su tamao mnimo, debe combinarse los elementos de ambas pginas en una sola. A esta estrategia se le llama Mezcla de Pginas. El proceso de mezcla obliga a insertar la clave del medio en la pgina madre de P y Q y posteriormente prescindir completamente de la pgina Q.
2012
88
ARBOLES B, ELIMINACION
25 10 20 30 40
5 7 8
13 15 18
22 24
26 27
32 35 38
42 45 46
2012
89
ARBOLES B, ELIMINACION
10 22 30 40
5 7 8
13 15 18 20
26 27
32 35 38
42 46
a)
10 22 30
5 7 8
13 15 18 20
26 27
35 40 42 46
b)
10 22 15 10 20 30 40
5 7
15 18 20
26 30 35 40
7 10
20 30 35 40
e)
c)
2012
d)
Programacin II, Universidad Catlica del Uruguay 90
ARBOLES B BINARIOS
Son los rboles B de orden 1. Por lo tanto cada nodo contiene entre uno y dos elementos, y es antecesor de entre dos y tres hijos. Tambin se les da el nombre de rbol 23. No son adecuados para el trabajo en memoria secundaria, sino que se usan para memoria primaria. Por ello se ha ideado una forma de representacin que ahorra memoria.
2012 Programacin II, Universidad Catlica del Uruguay 91
ARBOLES B BINARIOS
Representacin de nodos de rbol B binarios
a a b a
2012
A B
b b c
92
ARBOLES B BINARIOS
TNodo clave : TClave; Datos : TDatos; izquierdo, derecho :TNodo; Horizontal : boolean;
2012
93
ARBOLES B BINARIOS
Insercin : cuatro posibles situaciones que se presentan por el crecimiento de los subarboles de la derecha o de la izquierda El caso ms sencillo se da cuando crece el subrbol de la derecha de un nodo A y cuando A es la nica clave en su pgina
a b
2012
A B
c
94
ARBOLES B BINARIOS
A C
b
B A
d
95
ARBOLES B BINARIOS
Insercin del nodo A :el subrbol de la izquierda de un nodo B ha aumentado de altura, haciendo que una clave suba B A A B A B
c b
ARBOLES B BINARIOS
B A
c b
b
B A
d
97
Todo nodo contiene una clave y, como mximo, dos subrboles. Todo puntero puede ser horizontal o vertical. No existen dos punteros consecutivos horizontales en ninguna trayectoria de bsqueda (hay indicadores de horizontalidad para ambos punteros) Todos los nodos terminales aparecen en el mismo nivel. La longitud de la trayectoria de bsqueda es siempre menor a 2 log(N). Ejercicio Wirth 4.85
2012
98
B A
C A
B C
B A B C A B C A C
B C
C A
B C
B A B C A B C A C
2012
101
...
A1 A2 Ak
2012 Programacin II, Universidad Catlica del Uruguay 102
2012
103
Recorrida en Preorden
En un recorrido en preorden, un nodo es visitado antes que sus descendientes Aplicacin: imprimir un documento estructurado
1
Informe TDAArbol
2
1. Introduccin
5
2. Mtodos
9
Casos
3
1.1 General
2012
4
1.2 Aplicacin
6
2.1 Insertar
7
2.2 Buscar
8
2.3 Eliminar
104
Recorrida en Postorden
En un recorrido en postorden, un nodo es visitado despus de sus descendentes Aplicacin: calcular el espacio usado por archivos en un directorio y sus subdirectorios 9
p2/
8 3
trabajos/
7
programas/ todo.txt 1K
1
h1c.doc 3K
2012
2
h1nc.doc 2K
4
DDR.java 10K
5
Stocks.java 25K
6
Robot.java 20K
105
2012
106
2012
107
2012
109
REPRESENTACION DE ARBOLES
Representacin de rboles por lista de padres.
1 3 1 2 1 3 1 4 2 5 2 6 5 7 5 8 5 9 3 10 3
A
10
TDA Tnodo integer; TDA TArbol A = array [1..MaxNodos] de Tnodo; funcion HermanoDerecho(unNodo): Tnodo; i, padre : Tnodo; COM padre = A[n]; PARA i DE n + 1 A MaxNodos HACER (* busca un nodo despus del n que tenga el mismo padre *) SI A[i] = padre DEVOLVER i; DEVOLVER 0; (* devuelve el nodo nulo si no encontr hermano derecho *) FIN;
110
2012
REPRESENTACION DE ARBOLES
Representacin de rboles por arreglo con lista de hijos. a - b(c/d + e/f) * b / c d e + / f
1 2 3 4 5 6 7 8 9 10 11 a * b + / / c d e f 2 0 4 0 6 8 10 0 0 0 0 3 0 5 0 7 9 11 0 0 0 0
111
2012
ARBOLES
Largo de Camino:es el nmero de ramas o aristas que deben ser recorridas para llegar desde la raz hasta un cierto nodo. La raz tiene largo de camino 1, sus descendientes directos tienen largo 2, etc.. Largo de Camino del rbol: Se define como la suma de los largos de camino de todos sus componentes. Tambin se le llama largo de camino interno. El largo de camino medio es:
1 PI = ni i n i
2012 Programacin II, Universidad Catlica del Uruguay 112
I
2012
N
113
D I J
E K L
2012
114
ARBOLES
Largo de camino externo: suma de los largos de camino de los nodos especiales. Si el nmero de nodos especiales en el nivel i es mi entonces el largo de camino externo promedio es:
1 PE = mi i m i
N d ( h ) = 1 + d + d + ...+ d
2
2012
h 1
= d
i=0
h 1
115