You are on page 1of 115

PROGRAMACION II - 2010

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

Un rbol visto recursivamente

Raz

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Organigramas Sistemas de archivos Entornos de programacin

Uy

Internacional

Laptops

Desktops

Europa

Asia

Amrica

2012

Programacin II, Universidad Catlica del Uruguay

Terminologa de rboles genricos


Grado: nmero de subrboles de un nodo. Nodo terminal y nodo interno: nodo terminal es el que tiene grado cero, tambin llamado hoja. Un nodo interno es aqul que no es terminal. Nivel de un nodo respecto a la raz: la raz tiene nivel 0, y otros nodos tienen un nivel que es superior en uno al que tiene con respecto al subrbol Tj, de la raz, que los contiene.

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

ARBOLES

Nivel 3

Nivel 2

E C

F C

Nivel 1 Nivel 0
2012

B A

B A

Programacin II, Universidad Catlica del Uruguay

Altura y profundidad o nivel


Nodo Altura Nivel

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

10

Recorridos de los rboles genricos


Un recorrido visita los nodos del rbol de una forma sistemtica

Los recorridos u ordenamientos se definen recursivamente como sigue:


Si un rbol A es nulo, entonces el listado de los nodos de A en preorden, inorden o postorden, es la lista vaca. Si A contiene un slo nodo, entonces ese nodo constituye el listado en los tres rdenes.

...
A1 A2 Ak
2012 Programacin II, Universidad Catlica del Uruguay 11

Recorridos de Arboles genricos


Preorden : Raz de A, seguido de los nodos de A1 en preorden, luego los de A2 en preorden, etc. Inorden : Nodos de A1 en inorden, luego la raz, luego los nodos de los restantes subrboles en inorden. Postorden: Nodos de A1 en postorden, luego los de A2 en postorden, hasta el final, y luego la raz.

2012

Programacin II, Universidad Catlica del Uruguay

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

Algoritmo preOrden(v) visitar(v) Para cada hijo w de v preorden (w)

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

Programacin II, Universidad Catlica del Uruguay

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/

Algoritmo postOrden(v) Para cada hijo w of v postOrden (w) visitar(v)

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

Programacin II, Universidad Catlica del Uruguay

El TDA ARBOL. Operaciones a ser consideradas


Padre(unNodo). HijoIzquierdo(unNodo). HermanoDerecho(unNodo). Etiqueta(unNodo). Raiz. Anula. Otros??. (p.ej. Altura)

2012

Programacin II, Universidad Catlica del Uruguay

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

Arbol de Expresin Aritmtica


Arbol binario asociado con una expresin aritmtica:
Nodos internos: operadores Nodos externos: operandos

Ejemplo: rbol de expresin aritmtica para la expresin (2 (a 1) + (3 b))

+ 2 a
2012

1
17

Programacin II, Universidad Catlica del Uruguay

Aplicacin de Arbol Binario: Arbol de Decisin


Arbol binario asociado con un proceso de decisin
Nodos internos : preguntas con respuestas si / no Nodos externos : decisiones

Ejemplo: decisin de cena

comida rpida?
Si No

qu tal un caf?
Si

cuentas de gastos?
Si

No

No

Starbucks
2012

La Pasiva

La Vaca

Nuevo Garca
18

Programacin II, Universidad Catlica del Uruguay

Recorrido en Inorden de un rbol binario


En un recorrido en inorden el nodo es visitado despus que su subrbol izquierdo y antes que su subrbol derecho

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

Programacin II, Universidad Catlica del Uruguay

19

Impresin de expresiones aritmticas


Especializacin del recorrido en inorden Imprimir el operando u operador al visitar el nodo

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

((2 (a 1)) + (3 b))

2012

Evaluar expresiones aritmticas


Especializacin del recorrido en postorden

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

Ejercicios Arboles Binarios


Defina rbol binario. D un ejemplo de organizacin usando esta estructura. Represente la siguiente expresin aritmtica utilizando un rbol binario: a - (b * (c + d / (f + g)) + h * (i - j * (k + l))) y d un algoritmo para, utilizando este rbol, evaluar la expresin cuando las variables toman valores. El recorrido en preorden de un cierto rbol binario produce
ADFGHKLPQRWZ y el recorrido en inorden produce GFHKDLAWRQPZ

Dibuje el rbol binario correspondiente.


2012 Programacin II, Universidad Catlica del Uruguay 22

Ejercicios Arboles Binarios


Sean p(x), s(x) e i(x) las posiciones del nodo x en preorden, postorden e inorden respectivamente.
Marque en el cuadro siguiente las posiciones que pueden ser ciertas simultneamente.

i(n) < i(m) n es ancestro de m

s(n) < s(m)

p(n) < p(m)

n es descendiente de m

n est a la izquierda de m

n est a la derecha de m

2012

Programacin II, Universidad Catlica del Uruguay

23

Ejercicios Arboles Binarios


Escriba un algoritmo para contar las hojas de un rbol binario Dado un rbol binario de elementos de tipo entero, escriba un algoritmo que calcule la suma de todos los elementos. Escribir un algoritmo que determine la cantidad de nodos que se encuentran en un rbol binario en un nivel n

2012

Programacin II, Universidad Catlica del Uruguay

24

ARBOL BINARIO DE BUSQUEDA


Se dice que un rbol binario es de bsqueda si est organizado de forma que:

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

ARBOL BINARIO DE BUSQUEDA


TDA ArbolBinario Raiz : ElementoArbolBinario Primitivas Buscar (unaEtiqueta) : ElementoArbolBinario...
....

ArbolBinario.Buscar(unaEtiqueta) COM resultado = nulo si Raiz <> nulo ENTONCES resultado = Raiz.Buscar(unaEtiqueta) Devolver resultado FIN

2012

Programacin II, Universidad Catlica del Uruguay

26

ARBOL BINARIO DE BUSQUEDA


TDA ElementoArbolBinario Etiqueta : TipoEtiqueta HijoIzquierdo,HijoDerecho : ElementoArbolBinario

Operaciones Insertar(unElementoArbolBinario) Buscar(unaEtiqueta) Eliminar(unaEtiqueta)


...

2012

Programacin II, Universidad Catlica del Uruguay

27

ARBOL BINARIO DE BUSQUEDA


ElementoArbolBinario.Buscar(unaEtiqueta) : ElementoArbolBinario
COM RESULTADO = nulo SI unaEtiqueta = Etiqueta ENTONCES RESULTADO = THIS SINO SI unaEtiqueta < Etiqueta ENTONCES SI HijoIzquierdo <> nulo ENTONCES RESULTADO = HijoIzquierdo.Buscar(unaEtiqueta) FINSI SINO SI HijoDerecho <> nulo ENTONCES RESULTADO = HijoDerecho.Buscar(unaEtiqueta) FINSI FINSI FINSI devolver RESULTADO FIN

2012

Programacin II, Universidad Catlica del Uruguay

28

Bsqueda e Insercin en rboles binarios


ArbolBinario.Insertar(unElementoArbolBinario) COM SI Raiz = nulo ENTONCES Raiz = unElementoArbolBinario SINO Raiz.Insertar(unElementoArbolBinario) FIN

2012

Programacin II, Universidad Catlica del Uruguay

29

Bsqueda e Insercin en rboles binarios


ElementoArbolBinario.Insertar(UnNodoArbolBinario); COM SI Etiqueta = unElementoArbolBinario.Etiqueta ENTONCES SALIR // ya est en el rbol FINSI SI unElementoArbolBinario.Etiqueta < Etiqueta ENTONCES SI HijoIzquierdo = nulo ENTONCES HijoIzquierdo UnNodoArbolBinario SINO HijoIzquierdo.Insertar(UnNodoArbolBinario) FINSI SINO SI HijoDerecho = nulo ENTONCES HijoDerecho unElementoArbolBinario SINO HijoDerecho.Insertar(unElementoArbolBinario) FINSI FINSI FIN
2012 Programacin II, Universidad Catlica del Uruguay 30

Bsqueda e Insercin en rboles binarios


Norma

.
Jorge

.
Pedro

.
Ana

.
Mara Pablo

.
Walter

TDA TPalabra clave string cuenta integer izquierdo, derecho: TPalabra

CrearArbol AbrirArchivo MIENTRAS NO FIN ARCHIVO HACER LEER(archivo, palabra); Arbol.Insertar(palabra); end;

2012

Programacin II, Universidad Catlica del Uruguay

31

Ejemplo: rbol lexicogrfico


Indice de referencias cruzadas.
procedure Busca (var LaPalabra: PPalabra); var palabra: PPalabra; LaLinea:PLnea; begin palabra := LaPalabra; if p1 = nil then begin new(palabra); new(linea) with palabra^ do begin clave := PalabraActual; izquierdo := nil; derecho := nil; primero := LaLinea; ultimo := LaLinea; end; LaLinea^.linea := LineaActual; LaLinea^.Proximo := nil; LaPalabra := palabra; end else if PalabraActual < palabra^.clave then Busca(palabra^.izquierdo) else if PalabraActual > palabra^.clave then Busca(palabra^.derecho) else begin new(LaLinea); LaLinea^.linea := LineaActual; LaLinea^.Proximo := nil; palabra^.ultimo^.Proximo := LaLinea; palabra^.ultimo := LaLinea Programacin II, Universidad Catlica del Uruguay end; 32 end;

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

Bsqueda y eliminacin en rboles binario de bsqueda


Se busca el nodo con la etiqueta a eliminar. Si no existe un nodo con esa etiqueta, la eliminacin es infructuosa. Si existe y es una hoja, se elimina el nodo directamente. Si no es una hoja, pero le falta alguno de sus dos sub rboles, la operacin es sencilla, ya que basta con una reasignacin de referencias. Si el nodo a eliminar es un nodo interno completo, deben sustituirse sus datos y etiqueta por el los del nodo de mayor etiqueta de su sub rbol izquierdo (su inmediato anterior en el orden lexicogrfico dado ). Luego se elimina ese elemento, que ser una hoja, o le faltar el sub rbol derecho.
2012 2009 Programacin II, Universidad Catlica del Uruguay 33

ELIMINACION EN ARBOL BINARIO DE BUSQUEDA


10 10

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

Programacin II, Universidad Catlica del Uruguay

35

Eliminacin
Eliminacin del nodo 5 con 1 hijo: (a) antes y (b) despus

2012

Programacin II, Universidad Catlica del Uruguay

36

Eliminacin
Eliminacin del nodo 2 con dos hijos: (a) antes y (b) despus

2012

Programacin II, Universidad Catlica del Uruguay

37

Eliminacin en rbol binario de bsqueda


ArbolBinario.Min
COM RESULTADO = nulo SI Raiz <> nulo RESULTADO = Raiz.encontrarMin devolver RESULTADO FIN

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

Bsqueda y eliminacin en rboles binarios de bsqueda


ArbolBinario.Eliminar(UnaEtiqueta): Tipo Lgico COM SI Raiz = nulo ENTONCES DEVOLVER falso SINO SI Raz.Etiqueta <> UnaEtiqueta ENTONCES Devolver Raiz.BuscaParaQuitar(UnaEtiqueta) SINO Raiz Raiz.Quitar DEVOLVER verdadero FIN SI FIN SI FIN
2012 Programacin II, Universidad Catlica del Uruguay 39

Bsqueda y Eliminacin en rboles binarios de bsqueda


ElementoArbolBinario.BuscaParaQuitar(UnaEtiqueta): boolean; COM SI unaEtiqueta < Etiqueta ENTONCES SI HijoIzquierdo = nulo ENTONCES DEVOLVER falso // la etiqueta buscada no se encuentra en el arbol SINO SI HijoIzquierdo.Etiqueta <> UnaEtiqueta ENTONCES // puede estar en el HI pero ms abajo DEVOLVER HijoIzquierdo.BuscaParaQuitarUnaEtiqueta) SINO HijoIzquierdo HijoIzquierdo.Quitar // hace las sustituciones necesarias DEVOLVER verdadero FIN SI FIN SI SINO SI unaEtiqueta > Etiqueta ENTONCES SI HijoDerecho = nulo ENTONCES DEVOLVER falso SINO SI HijoDerecho.Etiqueta <> UnaEtiqueta ENTONCES DEVOLVER HijoDerecho.BuscaParaQuitar(UnaEtiqueta) SINO HijoDerecho HijoDerecho.Quitar DEVOLVER verdadero FIN SI FIN SI FIN SI FIN
2012 Programacin II, Universidad Catlica del Uruguay 40

Bsqueda y Eliminacin en rboles binarios de bsqueda


ElementoArbolBinario.Quitar: Tipo ElementoArbolBinario; COM SI EsHoja ENTONCES DEVOLVER nulo SINO SI HijoIzquierdo = nulo ENTONCES DEVOLVER HijoDerecho SINO SI HijoDerecho = nulo ENTONCES DEVOLVER HijoIzquierdo SINO // No le falta ningn hijo ElInmediatoAnterior HijoIzquierdo.ElementoMayor // hoja, o la falta el hijo derecho CopiarDatos(ElInmediatoAnterior) buscaParaQuitar(ElInmediatoAnterior.Etiqueta); DEVOLVER THIS FIN SI FIN SI FIN SI FIN
2012 Programacin II, Universidad Catlica del Uruguay 41

Bsqueda y Eliminacin en rboles binarios de bsqueda


ElementoArbolBinario.ElementoMayor: Tipo ElementoArbolBinario; // Devuelve el elemento con mayor clave en un rbol binario de bsqueda ElementoArbolbinario Aux COM Aux THIS MIENTRAS Aux.HijoDerecho <> nulo ENTONCES Aux Aux.HijoDerecho FIN MIENTRAS DEVOLVER Aux FIN

2012

Programacin II, Universidad Catlica del Uruguay

42

Vista recursiva usada para calcular el tamao de un rbol ST = SL + SR + 1

2012

Programacin II, Universidad Catlica del Uruguay

43

Vista recursiva usada para calcular la altura de un nodo:


HT = Max (HL + 1, HR + 1)

2012

Programacin II, Universidad Catlica del Uruguay

44

ARBOL BINARIO COMPLETO


1

4 8 16 17 18 9 19 20 10 21

5 11 22 23 24 12 25

6 13 14

7 15

2012

Programacin II, Universidad Catlica del Uruguay

45

Propiedades de los Arboles Binarios Completos


Notacin
n nmero de nodos e nmero de nodos externos i nmero de nodos internos h altura

Propiedades: e=i+1 n = 2e 1 hi h (n 1)/2 e 2h h log2 e h log2 (n + 1) 1

2012

Programacin II, Universidad Catlica del Uruguay

46

Anlisis de Bsqueda e Insercin en Arbol Binario de Bsqueda


Los algoritmos de insercin y bsqueda analizados no controlan el balanceo del rbol. Se desconoce a priori la forma en que el rbol ha de crecer. Si el rbol estuviera balanceado, para encontrar una clave se precisaran aproximadamente log n comparaciones. El peor caso se da para n/2 comparaciones. El problema es encontrar la cantidad promedio de comparaciones. n claves, n! rboles correspondientes a n! permutaciones de claves.
2012 Programacin II, Universidad Catlica del Uruguay 47

Ejercicios Arboles Binarios de Bsqueda


Qu es un rbol binario de bsqueda? Desarrolle el algoritmo de bsqueda correspondiente y evale su rendimiento. Desarrolle el algoritmo de eliminacin en rbol binario de bsqueda y evale su rendimiento Muestre el resultado de insertar los elementos 3,1,4,6,9,2,5 y 7 en un rbol binario de bsqueda inicialmente vaco. Muestre despus el resultado de eliminar la raz

2012

Programacin II, Universidad Catlica del Uruguay

48

Arboles Balanceados

Criterio de Adelson, Velskii y Landis:

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

(a) Arbol balanceado altura log N; (b) rbol no balanceado, altura N 1.

2012

Programacin II, Universidad Catlica del Uruguay

50

Arboles binarios de bsqueda posibles insertando las claves 1, 2 y 3 de diferentes maneras

2012

Programacin II, Universidad Catlica del Uruguay

51

Arboles de Fibonacci de alturas 2, 3 y 4

T2
2

T3
3

T4
5

1 1

4 2 1

2012

Programacin II, Universidad Catlica del Uruguay

52

ARBOLES BALANCEADOS
Desbalanceados
A B 2 6

B 8

A 10

Balanceados
B A
B

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

55

Arboles Balanceados

Criterio de Adelson, Velskii y Landis:

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

Programacin II, Universidad Catlica del Uruguay

57

Diferentes condiciones de desequilibrio


Supongamos que X es el nodo cuyo equilibrio queremos ajustar Se pueden dar cuatro casos:
1. 2. 3. 4.

Insercin Insercin Insercin Insercin

en en en en

el el el el

subrbol subrbol subrbol subrbol

izquierdo del hijo izquierdo de X derecho del hijo izquierdo de X izquierdo del hijo derecho de X derecho del hijo derecho de X

1 y 4 son simtricos respecto a X 2 y 3 son simtricos respecto a X

2012

Programacin II, Universidad Catlica del Uruguay

58

Rotacin Simple para resolver el caso 1

a) Antes de la rotacin
2012

b)Despus de la rotacin
59

Programacin II, Universidad Catlica del Uruguay

La rotacin simple balancea el rbol despus de la insercin del 1.

a) Antes de la rotacin

b)Despus de la rotacin

2012

Programacin II, Universidad Catlica del Uruguay

60

Rotacin simple simtrica para resolver el caso 4

a) Antes de la rotacin
2012

b)Despus de la rotacin
61

Programacin II, Universidad Catlica del Uruguay

La rotacin simple no resuelve el caso 2.

a) Antes de la rotacin
2012

b)Despus de la rotacin
62

Programacin II, Universidad Catlica del Uruguay

Rotacin doble LR para resolver el caso 2

a) Antes de la rotacin
2012

b)Despus de la rotacin
63

Programacin II, Universidad Catlica del Uruguay

Rotacin doble restablece el balance despus de la insercin del 5.

a) Antes de la rotacin

b)Despus de la rotacin

2012

Programacin II, Universidad Catlica del Uruguay

64

Rotacin doble RL para resolver el caso 3.

a) Antes de la rotacin

b)Despus de la rotacin

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

67

Ejercicios Arboles AVL


Qu es un Arbol Binario Balanceado AVL? Describa las situaciones de desbalanceo posibles (ilustre con ejemplos) y qu operaciones se deben aplicar en cada caso para restituir la condicin de AVL. Defina rbol balanceado. Describa una estructura de datos apta para implementarlo. Desarrolle el algoritmo de bsqueda e insercin en rbol balanceado. Ilustre el funcionamiento mediante un ejemplo. Cul es el orden del tiempo de ejecucin del mismo? Insertar en un rbol AVL las siguientes claves, en el orden indicado, 8, 5, 2, 1, 20, 15, 16, 17,7
mostrando la evolucin del rbol. Luego eliminar las clave 15 y 7, mostrando los pasos.

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

Programacin II, Universidad Catlica del Uruguay

68

Ejercicios Arboles AVL


Weiss Cuestiones Breves

18.3 y 18.4 18.9 18.10

Weiss Problemas tericos


2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

71

ARBOLES

A B C 1 W X Y
2012

A B

C 2

D A B

C 4

D
72

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

82

OPERACIONES TDA ARBOL B


//Buscar una clave en el rbol TArbolB.buscar (unaClave: TClave): TPagina
COM Si Raz <> nulo entonces Devolver Raiz.Buscar (unaClave) Sino Devolver nulo Fin si FIN

TPagina.buscar (unaClave: TClave): TPagina


COM paginaSiguiente buscarEnPagina(UnaClave) Si paginaSiguiente = THIS entonces Devolver THIS // en esta pgina encontramos la clave Sino Si paginaSiguiente = NULO entonces Devolver nulo // la clave no est en el rbol Sino Devolver paginaSiguiente.buscar(unaClave) // seguimos buscando Finsi Fin si FIN
2012 Programacin II, Universidad Catlica del Uruguay 83

OPERACIONES TDA ARBOL B


//Insertar una clave en el rbol TArbolB. insertar (unaClave: TClave): boolean COM Si Raz <> nulo entonces Si Raiz.Insertar (unaClave) = nulo entonces Devolver verdadero Sino Devolver falso Fin si Sino Devolver falso Fin si FIN TPagina. Insertar (Tipo clave UnaClave): TElemento COM

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

Programacin II, Universidad Catlica del Uruguay

84

OPERACIONES TDA ARBOL B


verificaEInserta (unElemento : TElemento) : TElemento COM Si (no(EstLlena)) entonces Si InsertarEnPgina(UnElemento) entonces Devolver nulo Sino Devolver(UnElemento) Fin si Sino // estaba llena Tipo pgina OtraPgina CrearPgina() OtraPgina.InsertarEnPgina(UnElemento) UnElemento DistribuirElementos(OtraPgina) UnElemento.SetPginaHija(OtraPgina) Si (no(EsRaz)) entonces Devolver UnElemento Sino //estamos en la raz! Tipo pgina NuevaRaz CrearPgina() NuevaRaz.InsertarEnPgina(UnElemento) NuevaRaiz.SetHijaMenor(Raz) Raz NuevaRaz Devolver nulo Fin Si Fin si FIN
2012 Programacin II, Universidad Catlica del Uruguay 85

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

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

Eliminar las siguientes claves:


25, 45, 24 38, 32 8, 27, 46, 13, 42 5, 22, 18, 26 7, 35, 15

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

92

ARBOLES B BINARIOS

TNodo clave : TClave; Datos : TDatos; izquierdo, derecho :TNodo; Horizontal : boolean;

2012

Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

ARBOLES B BINARIOS

A C

b
B A

c d Insercin del nodo C cuando A ya est llena, se Crea pgina y balance a


2012

d
95

Programacin II, Universidad Catlica del Uruguay

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

B no tiene referencias horizontales a la izquierda, rotacin


2012 Programacin II, Universidad Catlica del Uruguay 96

ARBOLES B BINARIOS

B A

c b

b
B A

Insercin del nodo A, sobreocupacin a


2012

d
97

Programacin II, Universidad Catlica del Uruguay

ARBOLES B BINARIOS SIMETRICOS


Son los que cumplen con las siguientes propiedades:

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

Programacin II, Universidad Catlica del Uruguay

98

ARBOLES B BINARIOS SIMETRICOS

B A

C A

B C

Insercin izquierda izquierda

B A B C A B C A C

Insercin izquierda derecha


2012 Programacin II, Universidad Catlica del Uruguay 99

ARBOLES B BINARIOS SIMETRICOS

B C

C A

B C

Insercin derecha derecha

B A B C A B C A C

Insercin derecha izquierda


2012 Programacin II, Universidad Catlica del Uruguay 100

ARBOLES B BINARIOS SIMETRICOS Ejercicios


qu largo puede tener la trayectoria ms larga de bsqueda en un rbol BBS ?. Realizar las siguientes inserciones en rbol BBS: 1) 1 2; 3; 4 5 6; 7; 2) 5 4; 3; 1 2 7 6; 3) 6 2; 4; 1 7 3 5; 4) 4 2 6; 1 7; 3 5;

2012

Programacin II, Universidad Catlica del Uruguay

101

Recorridos de los rboles genricos


Un recorrido visita los nodos del rbol de una forma sistemtica

Los recorridos u ordenamientos se definen recursivamente como sigue:


Si un rbol A es nulo, entonces el listado de los nodos de A en preorden, inorden o postorden, es la lista vaca. Si A contiene un slo nodo, entonces ese nodo constituye el listado en los tres rdenes.

...
A1 A2 Ak
2012 Programacin II, Universidad Catlica del Uruguay 102

Recorridos de Arboles genricos


Preorden : Raz de A, seguido de los nodos de A1 en preorden, luego los de A2 en preorden, etc. Inorden : Nodos de A1 en inorden, luego la raz, luego los nodos de los restantes subrboles en inorden. Postorden: Nodos de A1 en postorden, luego los de A2 en postorden, hasta el final, y luego la raz.

2012

Programacin II, Universidad Catlica del Uruguay

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

Algoritmo preOrden(v) visitar(v) Para cada hijo w de v preorden (w)

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

Programacin II, Universidad Catlica del Uruguay

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/

Algoritmo postOrden(v) Para cada hijo w of v postOrden (w) visitar(v)

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

Programacin II, Universidad Catlica del Uruguay

Recorrer el siguiente rbol en preorden y postorden

2012

Programacin II, Universidad Catlica del Uruguay

106

Representacin de rboles genricos Primer hijo siguiente hermano

2012

Programacin II, Universidad Catlica del Uruguay

107

Recorridas de rboles genricos - preorden


TArbolGenerico.preOrden; COM SI Raiz <> nulo Raiz.preOrden; FINSI FIN TNodoArbolGenerico.preOrden; COM Imprimir(etiqueta); unHijo PrimerHijo; MIENTRAS unHijo <> nulo hacer unHijo.preOrden; unHijo unHijo.HermanoDerecho; FIN MIENTRAS FIN
2012 Programacin II, Universidad Catlica del Uruguay 108

Recorridas de rboles genricos - postorden


TArbolGenerico.postOrden; COM SI Raiz <> nulo Raiz.postOrden; FINSI FIN TNodoArbolGenerico.postOrden; COM unHijo PrimerHijo; MIENTRAS unHijo <> nulo hacer unHijo.preOrden; unHijo unHijo.HermanoDerecho; FIN MIENTRAS Imprimir(etiqueta); FIN Programacin II, Universidad Catlica del Uruguay

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

Programacin II, Universidad Catlica del Uruguay

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

A : array[1..11] de op: caracter; izq, der: entero; end

2012

Programacin II, Universidad Catlica del Uruguay

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

ARBOLES LARGO DE CAMINO EXTERNO


A

I
2012

N
113

Programacin II, Universidad Catlica del Uruguay

ARBOLES NODOS ESPECIALES


A B C

D I J

E K L

2012

Programacin II, Universidad Catlica del Uruguay

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

El mximo nmero de nodos del rbol ser:

N d ( h ) = 1 + d + d + ...+ d
2
2012

h 1

= d
i=0

h 1

Programacin II, Universidad Catlica del Uruguay

115

You might also like