You are on page 1of 10

Programacin IV.

Gua 8 Facultad: Ingeniera Escuela: Computacin Asignatura: Programacin IV

Tema: Arboles en C#.


Ob eti!os Espec"icos

Definir el concepto de la estructura de datos Arbol. Implementar la estructura de datos Arbol en C #.

#ateriales $ E%uipo
Gua Nmero 8. Computadora con programa Microsoft Visual C#.

Introduccin Terica

Definicin de Arbol Binario.


n rbol binario es una estructura de datos de tipo rbol en donde cada uno de los nodos del rbol puede tener !" #" $ % sub rboles llamados de acuerdo a su caso como& #. 'i el nodo ra( tiene ! relaciones se llama )o*a. %. 'i el nodo ra( tiene # relaci$n a la i(+uierda" el segundo elemento de la relaci$n es el sub rbol i(+uierdo. ,. 'i el nodo ra( tiene # relaci$n a la derec)a" el segundo elemento de la relaci$n es el sub rbol derec)o.

2 Programacin IV, Gua 8

-a .igura anterior muestra un rbol binario sencillo de tama/o 0 1 altura ,"con un nodo ra( cu1o 2alor es %.

-a .igura muestra un 3rbol binario esencialmente completo. 45isten cuatro tipos de rbol binario& #. Arboles 6inarios Distintos. %. Arboles 6inarios 'imilares. ,. Arboles 6inarios 4+ui2alentes. 7. Arboles 6inarios Completos. A continuaci$n se )ar una bre2e descripci$n de los diferentes tipos de rbol binario as como un e*emplo de cada uno de ellos.

Arboles Binarios Distintos.


'e dice +ue dos rboles binarios son distintos cuando sus estructuras son diferentes. 4*emplo&

Programacin IV. Gua 8

Arboles Binarios Similares.


Dos rboles binarios son similares cuando sus estructuras son id8nticas" pero la informaci$n +ue contienen sus nodos es diferente. 4*emplo&

Arboles Binarios Equivalentes.


'on a+uellos arboles +ue son similares 1 +ue adem s los nodos contienen la misma informaci$n. 4*emplo&

Arboles Binarios Completos.


'on a+uellos arboles en los +ue todos sus nodos e5cepto los del ltimo ni2el" tiene dos )i*os& el sub rbol i(+uierdo 1 el sub rbol derec)o. -os nodos del rbol binario ser n representados como registros +ue contendr n como mnimo tres campos. 4n un campo se almacenar la informaci$n del nodo. -os dos restantes se utili(ar n para apuntar al sub rbol i(+uierdo 1 derec)o del sub rbol en cuesti$n. Cada nodo se representa gr ficamente de la siguiente manera&

Procedimiento

4 Programacin IV, Gua 8

Ejemplo 1. Implementaremos un rbol binario de bs+ueda en C#&


#. Crear un pro1ecto de consola 1 nombrarlo 9arbol:. %. Agregar el siguiente c$digo& using '1stem; using '1stem.Collections.Generic; using '1stem.<e5t; namespace arboles = public class Nodo< = public Nodo< NodoI(+uierdo; public int Informacion; public Nodo< NodoDerec)o; >>Constructor public Nodo<? @ = t)is.NodoI(+uierdo A null; t)is.Informacion A !; t)is.NodoDerec)o A null; B B class Crogram = static 2oid Main?stringD E args@ = int Fpcion A !; Nodo< Gai( A null; int Dato; do = Fpcion A Menu? @; sHitc) ?Fpcion@ = case #& Console.Irite?JValor del Nue2o Nodo& J@; Dato A int.Carse?Console.Gead-ine? @@; if ?Gai( AA null@ = Nodo< Nue2oNodo A neH Nodo<? @; Nue2oNodo.Informacion A Dato; Gai( A Nue2oNodo; B else = Insertar?Gai(" Dato@; B Console.Clear? @; breaK; case %& Gecorrer?Gai(@; Console.Irite-ine?J.in del Gecorrido"...J@; Console.Gead-ine? @; Console.Clear? @; breaK;

Programacin IV. Gua 8

case ,& Console.Irite?J<eclee el Dato a 6uscar& J@; Dato A int.Carse?Console.Gead-ine? @@; if ?Gai( LA null@ = 6uscarNodo?Gai(" Dato@; B else = Console.Irite-ine?J4GGFG" Arbol Vacio....J@; B Console.Clear? @; breaK; case 7& Console.Irite?J<eclee el Dato a 4liminar& J@; Dato A int.Carse?Console.Gead-ine? @@; if ?Gai( LA null@ = 4liminarNodo?ref Gai(" Dato@; B else = Console.Irite-ine?J4GGFG" Arbol Vacio....J@; B Console.Clear? @; breaK; case M& .inali(ar? @; breaK; default& Console.Irite-ine?J4GGFG" Fpcion In2alida....J@; Console.Gead-ine? @; Console.Irite-ine?JJ@; breaK; B B H)ile ?Fpcion LA M@; B static int Menu? @ = int Gesultado A !; Console.Irite-ine?JM4NN D4 AG6F-4'J@; Console.Irite-ine?JJ@; Console.Irite-ine?J#.O Gegistrar un Nue2o NodoJ@; Console.Irite-ine?J%.O Mostrar>Gecorrer el ArbolJ@; Console.Irite-ine?J,.O 6uscar un NodoJ@; Console.Irite-ine?J7.O 4liminar un NodoJ@; Console.Irite-ine?JM.O .inali(ar el CrogramaJ@; Console.Irite-ine?JJ@; Console.Irite?JFpcion& J@; Gesultado A int.Carse?Console.Gead-ine?@@;

6 Programacin IV, Gua 8

Console.Irite-ine?JJ@; return Gesultado; B >>Insertar en un arbol binario static 2oid Insertar?Nodo< Gai(" int Dato@ = if ?Dato P Gai(.Informacion@ = if ?Gai(.NodoI(+uierdo AA null@ = Nodo< Nue2oNodo A neH Nodo<? @; Nue2oNodo.Informacion A Dato; Gai(.NodoI(+uierdo A Nue2oNodo; B else = Insertar?Gai(.NodoI(+uierdo" Dato@; >>-lamada recursi2a B B else = >>6uscar por el lado derec)o if ?Dato Q Gai(.Informacion@ = if ?Gai(.NodoDerec)o AA null@ = Nodo< Nue2oNodo A neH Nodo<? @; Nue2oNodo.Informacion A Dato; Gai(.NodoDerec)o A Nue2oNodo; B else = >>-lamada recursi2a por el lado derec)o Insertar?Gai(.NodoDerec)o" Dato@; B B else = >>4l Nodo e5iste en el Arbol Console.Irite-ine?JNodo 45istente" Imposible Insertar...J@; Console.Gead-ine? @; B B B >>Metodo de recorrido static 2oid 6uscarNodo?Nodo< Gai(" int Dato@ = if ?Dato P Gai(.Informacion@ = if ?Gai(.NodoI(+uierdo AA null@ >>6uscar por el 'ubOArbol i(+uierdo = Console.Irite-ine?J4GGFG" No se encuentra el Nodo...J@; Console.Gead-ine? @; B else = 6uscarNodo?Gai(.NodoI(+uierdo" Dato@; B B else =

Programacin IV. Gua 8

if ?Dato Q Gai(.Informacion@ =Nif ?Gai(.NodoDerec)o AA null@ >>6uscar por el 'ubOArbol derec)o = Console.Irite-ine?J4GGFG" No se encuentra el Nodo...J@; Console.Gead-ine? @; B else = 6uscarNodo?Gai(.NodoDerec)o" Dato@; B B else =N>>4l nodo se encontro Console.Irite-ine?JNodo -ocali(ado en el Arbol...J@; Console.Gead-ine? @; B B B >>Metodo de 4liminar static 2oid 4liminarNodo?ref Nodo< Gai(" int Dato@ = if ?Gai( LA null@ =Nif ?Dato P Gai(.Informacion@ = 4liminarNodo?ref Gai(.NodoI(+uierdo" Dato@; B else = if ?Dato Q Gai(.Informacion@ =N4liminarNodo?ref Gai(.NodoDerec)o" Dato@; B else =NNodo< Nodo4liminar A Gai(; >>'i lo 4ncontro if ?Nodo4liminar.NodoDerec)o AA null@ = Gai( A Nodo4liminar.NodoI(+uierdo; B else = if ?Nodo4liminar.NodoI(+uierdo AA null@ = Gai( A Nodo4liminar.NodoDerec)o; B else = Nodo< Au5iliarNodo A null; Nodo< Au5iliar A Gai(.NodoI(+uierdo; bool 6andera A false; H)ile ?Au5iliar.NodoDerec)o LA null@ = Au5iliarNodo A Au5iliar; Au5iliar A Au5iliar.NodoDerec)o; 6andera A true; B Gai(.Informacion A Au5iliar.Informacion; Nodo4liminar A Au5iliar; 7. 4*ecutar el pro1ecto 1 2er sus resultados. if ?6andera AA true@ = Au5iliarNodo.NodoDerec)o A Au5iliar.NodoI(+uierdo; B

8 Programacin IV, Gua 8

else = B B B B B

Gai(.NodoI(+uierdo A Au5iliar.NodoI(+uierdo;

B else = Console.Irite-ine?J4GGFG" 4- Nodo no se 4ncuentra en el Arbol...J@; Console.Gead-ine? @; B B >>Metodo de .inali(acion static 2oid .inali(ar? @ = Console.Irite-ine?J.in del Crograma" press an1 Ke1 to continue"...J@; Console.Gead-ine? @; B B B >> .in de Crogram >> .in del namespace

An&lisis de resultados
#. A partir del c$digo anterior" desarrolle el m8todo 9Mostrar>Gecorrer el 3rbol: usando el recorrido en orden. 4l algoritmo es el siguiente& 2oid enFrden?Arbol6inario ra(@ = if?rai(@ = enFrden?rai(RQi(+@; 2isitar?rai(RQdato@; enFrden?rai(RQder@; B B %. Desarrolle una interfa( gr fica para el mane*o del arbol binario de bs+ueda.

Programacin IV. Gua 8

In!estigacin Complementaria

Cara la siguiente semana& Implementar en entorno gr fico el mane*o de rboles gen8ricos" es decir" a+uellos +ue los nodos tengan la posibilidad de referenciar a m s de dos nodos )i*o&

10 Programacin IV, Gua 8

3ua 4: Arboles en C#.


Alumno: 'ocente:

Hoja de cotejo:

#&%uina 1o: 32: Fec5a:

EVALUACIN % CONOCIMIENTO 'el () al *)+ 1-4 Conocimiento de"iciente de los "undamentos tericos 5-7 Conocimiento $ e,plicacin incompleta de los "undamentos tericos 8-10 Conocimiento completo $ e,plicacin clara de los "undamentos tericos Nota

APLICACIN DEL CONOCIMIENTO

'el -)+ al .)+

ACTITUD

'el /0+ al *)+

1o tiene actitud proacti!a.

Actitud propositi!a $ con propuestas no aplicables al contenido de la gua.

Tiene actitud proacti!a $ sus propuestas son concretas.

TOTA2 /))+

You might also like