Professional Documents
Culture Documents
#ateriales $ E%uipo
Gua Nmero 8. Computadora con programa Microsoft Visual C#.
Introduccin Terica
-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.
Procedimiento
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?@@;
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 =
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
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.
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&
Hoja de cotejo:
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
ACTITUD
TOTA2 /))+