You are on page 1of 18

9.

´ Arboles

Una estructura de datos con una relaci´n es una ´rbol si y s´lo: o a o La relaci´n es conexa, es decir, existe una composici´n de relaciones entre cualquier par de o o nodos en el ´rbol. a No admite ciclos. Definici´n: Un ´rbol T es un conjunto finito de uno o m´s nodos tal que: (i) hay un nodo especialo a a mente llamado ra´ R; (ii) los dem´s nodos est´n particionados en n ≥ 0 conjuntos desconectados ız a a T1 . . . Tn , donde cada uno de estos conjuntos es un ´rbol, as´ llamados sub´rboles de la ra´ As´ a ı a ız. ı: T Ti ∩ Tn = ∅ Padre: El nodo inmediatamente antecesor Hijos: nodos inmediatamente sucesor Grado: n´mero de hijos de un nodo u Nivel: distancia a la ra´ de un nodo ız Profundidad: nivel m´ximo de un ´rbol a a Bosque: ´rboles desconectados a Formas de visualizar un ´rbol son: a Gr´fico: a
A B C D

= {R} ∪ T1 . . . ∪ Tn

(2)

E K L

F

G

H M

I

J

Listas: (A(B(E(K,L),F),C(G),D(H(M),I,J))) 50

Se llaman los nodos que a a no tienen hijos. ´ Arbol Binario Definici´n: Un ´rbol binario es un n´mero finito de nodos que es vac´ o consiste de una ra´ con o a u ıo ız dos ´rboles binarios desconectados llamados sub´rbol izquierdo y derecho. se convierte en no conexo a El ´rbol no tiene ciclos y es conexo.Data 0 A 1 1 0 C 0 G 0 1 0 D 1 0 0 B 1 0 F 0 0 H 0 M 0 0 E 0 K 0 L 0 0 I 0 J 0 La representaci´n es esencialmente por listas encadenadas o Teoremas: El ´rbol es conexo pero al eliminar un arco. nodos hojas o terminales. arcos = nodos − 1 a Al agregar un arco a un ´rbol se crea un ciclo. 51 . Nodos con uno o dos hijos son llamados nodos internos. a 10.

Por lo tanto. el n´mero de nodos o a a u m´ximos en el nivel i es 2 veces el m´ximo n´mero de nodos en el nivel i − 1 o 2i . i2 ) ::= if i1 = i2 then true else IS IN (bt1 . el m´ximo n´mero de nodos o ız ´ a u en el nivel i = 0 es 20 = 2i . i. i ≥ 0. Entonces. bt2 )) ::= bt1 RCHILD(N EW ()) ::= N EW () RCHILD(M AKEBT REE(bt1 . 52 . Substrayendo N = 1 + l + 2m de N = n + m + l nos queda que n = m + 1. i1 . 0 ≤ j ≤ i. bt2 ). entonces n = m + 1. item) → boolean IS EM P T Y (btree) → boolean for all bt1 . N es igual al a ız n´mero de arcos B + 1. Por lo tanto N = 1 + l + 2m. Hip´tesis de inducci´n: Para todo j. i. i. i2 ) LCHILD(N EW ()) ::= N EW () LCHILD(M AKEBT REE(bt1 . bt2 ∈ BT REE. Todos los nodos en el ´rbol excepto por la ra´ tienen un arco de llegada. i1 . i) ::= f alse IS IN (M AKEBT REE(bt1 . o o a u Paso de inducci´n: El m´ximo n´mero de nodos en el nivel i − 1 es 2i−1 . As´ u e ı: B = l + 2m.structureBTREE(ITEM) declare N EW () → btree M AKEBT REE(btree. u Prueba: Sea l el n´mero de nodos de grado uno. bt2 )) ::= bt2 Lema: El m´ximo n´mero de nodos en un nivel i de un ´rbol binario es 2i . i. bt2 )) ::= f alse IS IN (N EW (). si n es el n´mero de nodos terminales (hojas) y m es el a ıo u n´mero de nodos de grado 2. i2 ) ∨ IS IN (bt2 . Debido a que cada nodo del ´rbol tiene como m´ximo grado 2. el m´ximo n´mero de nodos en el nivel j es 2j . todo arco emana de un nodo de grado uno o de grado dos. i2 ∈ item let DAT A(N EW ()) ::= error DAT A(M AKEBT REE(bt1 . i. n´mero de nodos en un ´rbol binario de profundidad k es 2 u a Prueba Por inducci´n o Base inducci´n: La ra´ es el unico nodo en el nivel 0. btree) → btree LCHILD(btree) → btree RCHILD(btree) → btree DAT A(btree) → item IS IN (btree. k ≥ 0. Tambi´n. item. y el m´ximo a u a a k+1 − 1. El m´ximo a a u a n´mero de nodos n en un ´rbol binario de profundidad k es la sumatoria del m´ximo n´mero de u a a u nodos en cada nivel: k n= i=0 2i = 2k+1 − 1 Lema: Por cada ´rbol binario no vac´ T . por la hip´tesis de o a u o inducci´n. bt2 )) ::= i IS EM P T Y (N EW ()) ::= true IS EM P T Y (M AKEBT REE(bt1 . entonces el n´mero total de nodos N en el ´rbol u u a es N = n + m + l.

Cuando i = 1.2. por cada nodo i . Para n = 0. Para n > 0. el tiempo de las llamadas recursivas esencialo ız mente). a RCHILD(i) est´ en 2i + 1 si 2i + 1 ≤ n. suponga que la llamada al reıo corrido ocurri´ en un nodo x ra´ con k nodos en el sub´rbol izquierdo y n−k−1 hijos en el sub´rbol o ız a a derecho. Provemos que T (n) = (c+d)n+c. a Esta forma de representaci´n no es muy usada por problemas de p´rdida de espacio. o o Si un ´rbol es completo con n nodos. a o entonces su hijo izquierdo ocupa la posici´n 2i y su hijo derecho la posici´n 2i + 1. 1 ≤ i ≤ n. 53 . El tiempo de recorrido es T (n) = T (k)+T (n−k−1)+dparaalgunaconstantepositivad que refleja el tiempo de ejecuci´n en el nodo ra´ (o sea. a ız LCHILD(i) est´ en 2i si 2i ≤ n. Si 2i > n entonces no tiene hijo izquierdo. Representaci´n por punteros o Usando punteros. nosotros tenemos que (c+d)0+c = c = T (0).1. Si 2i + 1 > n. o e 10. entonces no tiene hijo derecho.10. Representaci´n por arreglos o Un ´rbol binario se representa en un arreglo del siguiente modo: si un nodo ocupa la posici´n i. Caminamiento en un ´rboles binario T : a Procedure IN ORDER(T ) if T = nil do [ call IN ORDER(LCHILD(T )) print(DATA(T)) call IN ORDER(RCHILD(T )) ] end IN ORDER Procedure P REORDER(T ) if T = nil do [ print(DATA(T)) call P REORDER(LCHILD(T )) call P REORDER(RCHILD(T )) ] end P REORDER Procedure P OST ORDER(T ) if T = nil do [ call P OST ORDER(LCHILD(T )) call P OST ORDER(RCHILD(T )) print(DATA(T)) ] end P OST ORDER Si T es un ´rbol binario con ra´ de n nodos. cada nodo es un registro con tres campos: el dato. tenemos: a PARENT(i) est´ localizado en i/2 si i = 1. Sea T (n) el a ız a tiempo que toma el recorrido de un ´rbol binario de n nodos. el puntero al hijo izquierdo y el puntero al hijo derecho. el caminamiento en el ´rbol toma Θ(n). i es la ra´ y no tiene padre. El menor tiempo posible es el de un a a ´rbol vac´ T (0) = c para alguna constante positiva c.

i. i2 ) ::= if i1 = i2 then true else if i2 < i1 then IS IN (bt1 . i. bbt2 ) else M BT REE(N EW (). i2 . i2 ) M IN IM U M (N EW ()) ::= error M IN IM U M (M BT REE(N EW (). i1 . M BT REE(N EW (). bbt2 ). i. N EW ())) else M BT REE(IN SERT (i. ´ Arboles Binarios de B´ squeda u Un ´rbol binario de b´squeda es un ´rbol binario donde la ra´ es siempre mayor que los nodos del a u a ız sub´rbol izquierdo y menor que todos los nodos del sub´rbol derecho. bbt2 ) else M BT REE(bbt1 . M BT REE(bbt1 . i2 . i2 . IN SERT (i. IN SERT (i. i2 . i) ::= f alse IS IN (M BT REE(bbt1 . bbt2 )) ::= if i < i2 then M BT REE(M BT REE(N EW (). i. i. bbt2 )) ::= M AXIM U M (bbt2 ) 54 . bbt2 )) ::= M IN IM U M (bbt1 ) M AXIM U M (N EW ()) ::= error M AXIM U M (M BT REE(bbt1 . i. item. item) → boolean M IN IM U M (bbtree) → item M AXIM U M (bbtree) → item for all bt1 . bbt2 )) ::= f alse IS IN (N EW (). bbt2 )) ::= M BT REE(bbt1 . N EW ()) IN SERT (i. i1 . i2 . N EW ())) ::= i M AXIM U M (M BT REE(bbt1 . bbt2 )) ::= if i < i2 then M BT REE(IN SERT (i. bt2 ∈ BT REE. i2 . i2 . bbt1 )) IN SERT (i. bbtree) → btree IN SERT (item. i2 . M BT REE(N EW (). M BT REE(bbt1 . bbt1 ). N EW ()) ::= M BT REE(N EW (). i. M BT REE(bbt1 .Para n > 0 tenemos que: T (n) = T (k) + T (n − k − 1) + d = ((c + d)k + c) + ((c + d)(n − k − 1) + c) + d (3) = (c + d)n + c = (c + d)n + c − (c + d) + c + d Esto demuestra que T (n) = (c + d)n + c y esto es Θ(n). i2 .3. i. bbt2 )) ::= i M IN IM U M (M BT REE(bbt1 . bbt1 ). i2 ∈ item let IN SERT (i. 10. N EW ()). N EW ())) ::= if i > i2 then M BT REE(bbt1 . N EW ()) IN SERT (i. bbtree) → bbtree IS EM P T Y (btree) → boolean IS IN (bbtree. bbt1 )) IS EM P T Y (N EW ()) ::= true IS EM P T Y (M BT REE(bbt1 . bbt2 ) IN SERT (i. i. i. a a structureBBTREE(ITEM) declare N EW () → bbtree M BT REE(bbtree. i2 ) else IS IN (bt2 . i.

ız M´ ınimo y M´ximo: a Procedure M IN IM U M (x) // x nodo del ´rbol binario de b´squeda a u while LCHILD(x) = nil do [ x := LCHILD(x) ] return x end M IN IM U M Procedure M AXIM U M (x) // x es un nodo del ´rbol binario de b´squeda a u while RCHILD(x) = nil do [ x := RCHILD(x) ] return x end M AXIM U M Ambos Algoritmos tienen complejidad O(h) ya que ambos siguen el camino desde la ra´ a la ız hoja m´s izquierda o derecha del ´rbol. RCHILD(T )) ] else return ”no se encontr´” o end BU SCAR Procedure BU SCAR(N. a a Sucesor y Predecesor: 55 . con h siendo la profundidad. es un camino de largo h. la b´squeda llega hasta la hoja de un´rbol pasando por un camino desde la u a ra´ hata la hoja. T ) // no recursivo // N es el valor buscado // T es la ra´ del ´rbol binario de b´squeda ız a u p := T while p = nil do [ if N = DAT A(p) then return p else if N < DAT A(p) then p := LCHILD(p) else p := RCHILD(p) ] return ”no se encontr´” o end BU SCAR En el peor caso. LCHILD(T )) else BU SCAR(N. es decir.Los algoritmos de ´rboles binarios de b´sqeuda son: a u B´ squeda: u Procedure BU SCAR(N. T ) // N es el valor buscado // T es la ra´ del ´rbol binario de b´squeda ız a u if T = nil do [ if N = DAT A(T ) then return T else if N < DAT A(T ) then return BU SCAR(N.

la inserci´n en un ´rbol se hace en un nodo hoja. el sucesor y es el m´ a ınimo valor del sub´rbol derecho. RCHILD(T )) end IN SERT AR En el peor caso. el sucesor y es el menor a ancestor de x cuyo hijo izquierdo es tambi´n un ancestor de x. lo que queda dado por la o a profundidad del ´rbol O(h)antes de insertar.Procedure SU CESSOR(x) // x es un nodo en el ´rbol a //P AREN T (x) obtiene el padre de x if RCHILD(x) = nil then return M IN IM U M (RCHILD(x)) y := P AREN T (x) while y = nil and x = RCHILD(y) do [ x := y y := P AREN T (y) ] return y end SU CESSOR Si un nodo x tiene un sub´rbol derecho. esta profundidad puede variar. T ) // P es el nodo a insertar // T es la ra´ del ´rbol binario de b´squeda ız a u if DAT A(T ) = DAT A(P ) then return existe else if DAT A(P ) < DAT A(T ) then [ if LCHILD(T ) = nil then [ LCHILD(T):= P return ] else IN SERT AR(P. entonces. a Si un nodo no tiene sub´rbol derecho y tiene sucesor y. a 56 . Ojo. e Insertar y Borrar: Procedure IN SERT AR(P. LCHILD(T ))] else if RCHILD(T ) = nil then[ RCHILD(T):= P return ] else IN SERT AR(P. al insertar. e La complejidad del algoritmo es O(h) porque sigue el camino hacia una hoja del sub´rbol a derecho o sigue hacia arriba el camino hasta la ra´ ız El algoritmo P redecessor(x) es sim´trico y con el mismas complejidad.

modifique el padre de P para reemplazar P por nil como su hijo. N H T N H T B A D I J K L M P R U A B D I J K L R U 57 .Procedure DELET E(P. T ) // P es el nodo a eliminar // T es la ra´ del ´rbol binario de b´squeda ız a u if LCHILD(P ) = nil and RCHILD(P ) = nil then y := P else y := SU CCESSOR(P ) if LCHILD(y) = nil then x := LCHILD(y) else x := RCHILD(y) if x = nil then [ P AREN T (x) := P AREN T (y) if P AREN T (y) = nil then T := x else if y = LCHILD(P AREN T (y)) then LCHILD(P AREN T (y)) := x else RCHILD(P AREN T (y)) := x if y = x then DATA(P) := DATA(y) copia de informaci´n de punteros o return y end DELET E Para borrar se consideran 3 casos. Si P no tiene hijos.

si el nodo tiene dos hijos. Ene a u e tonces.Si P tiene s´lo un hijo. se divide P haciendo un nuevo enlace entre su hijo y su padre. ¿ c´mo mantener el ´rbol balanceado? o a Definici´n: en un ´rbol de b´squeda balanceado (AVL) la profundidad del sub´rbol izquierdo es o a u a igual a la profundidad del sub´rbol derecho ±1. y. el cual no tiene hijo izquierdo y se reemplaza la clave de P y sus punteros con la clave de y y sus informaci´n de o punteros. esta profundidad es satisfecha recursivaa mente por los sub´rboles. o N H T N H T B A D I J K L M P R U A B D I L M J P R U Finalmente. A su vez. Por ejemplo: a 58 . N I T N H T B A D I J K L M P R U A B D J K L M P R U Problema: La eficiencia de un m´todo depende de que el ´rbol de b´squeda est´ balanceado. se divide el sucesor de P .

El segundo caso. a B A C B C El problema sucede cuando al insertar el nodo. se desbalancea el ´rbol. la rotaci´n es simple y o a o se hace en el sentido contrario al desbalanceo.M H T B A D J P R U Supongamos que tenemos un ´rbol binario de b´squeda balanceado y le insertamos un nuevo nodo. Eso sucede en dos caso a posibles: B C B C La soluci´n es rotar el ´rbol una vez insertado el nodo. En el primer caso. a u El caso simple es cuando el ´rbol continua siendo balanceado. es necesario hacer dos rotaciones ya que el desbalanceo se produce en el sentido contrario a la inserci´n: o 59 .

ı 3. no se puede garantizar a que el balanceo del sub´rbol mantenga el rbol que lo contenga balanceado. a En resumen: Al insertar: 1. desde all´ hacia arriba.B C C + D A C + B A B C B D En ambos casos. o Al eliminar: 1. hacer la rotaci´n adecuada. chequear donde ocurre el desbalanceo. a Otra situaci´n a considerar es al borrar un nodo de un ´rbol que est´ balanceado y que se desbao a a lancea. A diferencia de cuando se inserta. los ´rboles resultantes pueden cambiar su profundidad y por lo tanto. B A C D A B D C Al igual que para inserci´n se deben realizar rotaciones. los ´rboles resultantes mantienen la profundidad inicial. borrar el nodo 2. usar b´squeda binaria para ver donde insertar. ubicar punto de desbalanceo (´nico si existe) u 3. sin emo bargo. hacer la rotacti´n correspondiente o 60 . e insertar el nodo u 2.

al ingresar la clave 20 se producen dos desbalances. el ´rbol vuelve a estar balanceado. en la siguiente figura. a 61 . si cambi´ profundidad volver al punto 2 o Por ejemplo. o 7 4 3 2 6 8 12 9 11 18 14 17 20 rotación izquierda 7 19 22 4 3 2 9 6 8 12 11 18 19 14 17 22 20 Sin embargo.4. al tomar el desbalance mas profundo (m´s cercano a la hoja donde se inserta el a elemento) y su balanceo. La rotaci´n o sobre el nodo con valor 11 soluciona s´lo un debalance.

y) α X Y β γ left rotation(T.y) 62 . o Y X α β γ right rotation(T.7 4 3 2 6 8 12 9 11 18 14 17 20 19 22 7 rotación doble 4 3 2 9 6 8 12 11 18 20 14 19 17 22 Algoritmos de rotaci´n: Asume que X tiene hijo derecho.

x) // x nodo de rotatci´n o // T es la ra´ del ´rbol binario de b´squeda ız a u y := RCHILD(x) RCHILD(x) := LCHILD(y) if LCHILD(y) = nil then P AREN T (LCHILD(y)) := x P AREN T (y) := P AREN T (x) if P AREN T (x) = nil then T := y else if x = LCHILD(P AREN T (x)) then LCHILD(P AREN T (x)) := y else RCHILD(P AREN T (x)) := y LCHILD(y) := x PARENT(x) := y end LEF T ROT AT ION (T.Procedure LEF T ROT AT ION (T. x) 63 .

E.E.H. Eso nos queda: A B. a A B C D.I Continuando de esta manera. se llega a: A B C G H Se puede decir que cada ´rbol binario tiene un unico par de secuencias pre-orden-inorden. se tiene 1 posible ´rbol binario.I Movi´ndose a continuaci´n de la secuencia en preorden est´ B como la pr´xima ra´ y por la e o a o ız secuencia en inorden se tiene que B no tiene hijo izquierdo y un sub´rbol derecho con C. a Para 0 o 1 nodo .C D.G. Dado una secuencia de un ´rbol binario en preorden y a otra en inorden.H. se puede construir el ´rbol binario haciendo que la primera letra en a preorden sea la ra´ y al consider la definici´n en inorden de que todos los antecesores de A ız o sean los hijos izquierdo y los restantes en el lado derecho.Ejercicios de ´rboles binarios y ´rboles binarios de b´ squeda a a u 1. a 64 D E F J . es posible definir el unico ´rbol que las define. Contando ´rboles binarios.F.F.G. ´ a Suponga la siguiente secuencia en preorden: A B C D E F G H I y la secuencia en inorden: B C A E D G H F I. Combinando preorden con inorder. a ´ 2.

2. . distintos ´rbol binarios definen distintas secuencias en inorden a (permutaciones en inorden).3.2. las posibles secuencias son: 1.2. 3). entona ces por el ejercicio anterior. bn−i−1 : ız bn = 0≤i≤n−1 bi bn−i−1 . n ≥ 1 ∧ b0 = 1 Con recurrencia B(x) = i≥0 bi xi con B(0) = b0 = 1 √ 1 − 1 − 4x B(x) = 2x Por teorema binomial 1/2 m+1 65 B(x) = m≥0 (−1)m 22m+1 xm . se tienen 5. n nodes a trav´s de una pila y borr´ndolas en todas e a las formas posibles es igual al n´mero total de ´rboles binarios con n nodos. . a Para 3 nodos. es posible mostrar que el n´mero total de o u distintas permutaciones pasando los 1 .3.Para 2 nodos. . u a Comenzemos con 3 nodos (1 . .3.2. Usando el concepto de permutaci´n en inorden.3. Se puede deducir que bn es la suma de todos los posibles ´rboles binarios de la a siguiente forma.3.2. queremos una expresi´n bn de los n´meros de ´rboles binarios distintos a o u a con n nodos.1 Cada una de estas permutaciones corresponde a uno de los 5 ´rboles posibles: a 1 2 3 3 1 2 2 3 3 3 1 2 2 1 1 En forma m´s general. n. se tiene 2 posibles ´rboles binarios.1. . Para ¿n? Si los nodos de un ´rbol son enumerados en una secuencia de preorden de 1 .1. .. una ra´ y dos subrboles bi .1.

Arboles atados: Arboles atados son aquellos donde los nodos nulos de un ´rbol binario a tradicional son usados para asociar el nodo al nodo sucesor o antecesor en el recorrido del a ´rbol en un determinado orden (INORDER. queue) → queue o P REORDER(CREAT E) ::= EM P T Y QU EU E P REORDER(M AKEBT (l. d. ADDQ(EM P T Y QU EU E. (IN ORDER(l))) P OST ORDER(CREAT E) ::= EM P T Y QU EU E P OST ORDER(M AKEBT (l. d. ADDQ(EM P T Y QU EU E. Algunos algoritmos para estos ´rboles son: a 66 . usando la definici´n AP P EN D(queue. indique si el ´rbol est´ o no lleno. d. adem´s.Comparando las ecuaciones anteriores. r)) ::= M AKEBT (SW AP BT REE(r). Extensi´n de la definici´n algebraica de un ´rbol binario. bn es el coeficiente de xn en B(x): bn ) = 1 n+1 2n n 4n bn = O( 3/2 ) n 3. d. Defina las funciones: o o a P REORDER(btree) → queue IN ORDER(btree) → queue P OST ORDER(btree) → queue Defina. (P OST ORDER(l))). el nivel es h + 1) . d. POSTORDER. se asume aqu´ que a la altura h. d. r)) ::= AP P EN D(AP P EN D((IN ORDER(l)). PREORDER). Arboles Completos: Un ´rbol con altura h es completo si tiene todos los niveles llenos hasta a el nivel h (ojo. a a ´ ´ 5. d)) SW AP BT REE(CREAT E) ::= CREAT E SW AP BT REE(M AKEBT (l. r)) ::= AP P EN D(AP P EN D((P OST ORDER(l)). r)) ::= AP P EN D(AP P EN D(ADDQ(EM P T Y QU EU E. d). SW AP BT REE(l)) N U M LEAV ES(CREAT E) ::= 0 N U M LEAV ES(M AKEBT (l. d)). r)) ::= if ISEM T BT (l) and ISEM T BT (r) then 1 else N U M LEAV ES(l) + N U M LEAV ES(r) ´ 4. El nivel h + 1 est´ lleno de ı a izquierda a derecha y a partir de un punto en adelante est´ vac´ Escriba un algoritmo que a ıo. En la siguiente figura se muestra un ´rbol atado para un recorrido en inorder que apoya los algoritmos de a sucesor o predecesor. (P REORDER(l))). (P REORDER(r))) IN ORDER(CREAT E) ::= EM P T Y QU EU E IN ORDER(M AKEBT (l. una funci´n que realice el SW AP BT REE(btree) → btree que invierte los a o hijos izquierdos y derechos en forma recursiva y la funci´n que entrega el n´mero de nodos o u hojas de un btree N U M LEAV ES(btree) → int.

a // N retornar´ el valor del sucesor a N := RLIN K(N ) if N es un puntero de atadura o N = nil then termina while LLIN K(N ) no sea un puntero de atadura do N := LCHILD(N ) endSU CESSOR Recorrer en inorder un ´rbo atado en inorder a Procedure W ALK(N odeR) //Sea R la ra´ del ´rbol atado ız a N := R while LLIN K(N ) = nil do N := LCHILD(N ) Visite N N := SU CCESOR(N ) while N = nil do [ visite N N := SU CCESOR(N )] endW ALK Insertar un sub´rbol atado T1 como sub´rbol derecho de un nodo N en otro sub´rbol a a a atado T2 . a Procedure SU CESSOR(var N odeN ) //Sea N el nodo en un ´rbol atado en inorder para el cual se desea encontrar el sucesor. nodeRT1 ) // RT1 es la ra´ de T1 ız R := RT1 S := N repeat S := RCHILD(S) until S es una atadura o S = nil RLIN K(N ) := R Q := R while RLIN K(Q) no sea una atadura y RLIN K(Q) = nil do Q := RLIN K(Q) RLIN K(Q) := S Q := R while LLIN K(Q) no sea una atadura y LLIN K(Q) = nil do Q := LLIN K(Q) LLIN K(Q) := N endIN SERT AR 67 .I 0 D A H C E punteros adicional punteros originales F B G ´ Figura 20: Arboles Atados Encontrar el sucesor en inorder de un nodo N en un ´rbol atado. Procedure IN SERT AR(var nodeN.