Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.92 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace proyecto1._1
  8. {
  9.  
  10.  
  11. public class NodoT
  12. {
  13.  
  14. public NodoT NodoIzquierdo;
  15. public int Informacion;
  16. public NodoT NodoDerecho;
  17. //Constructor
  18. public NodoT()
  19. {
  20. this.NodoIzquierdo = null;
  21. this.Informacion = 0;
  22. this.NodoDerecho = null;
  23. }
  24. }
  25. /// <summary>
  26. /// Summary description for Class1.
  27. /// </summary>
  28.  
  29. class Class1
  30. {
  31.  
  32. /// <summary>
  33. /// The main entry point for the application.
  34. /// </summary>
  35. [STAThread]
  36. static void Main(string[] args)
  37. {
  38.  
  39. string[] nombre = new string[1000];
  40. string[] apellido = new string[1000];
  41. string[] correo = new string[1000];
  42. int[] telefono = new int[1000];
  43. int[] codigo = new int[1000];
  44. Random rnd = new Random();
  45. int Opcion = 0, contador = 0;
  46.  
  47. NodoT Raiz = null;
  48. int Dato;
  49. do
  50. {
  51. Opcion = Menu();
  52. switch (Opcion)
  53. {
  54. case 1:
  55. Console.WriteLine("\t\t-----------------------------------------------");
  56. Console.WriteLine("\t\t- INGRESO DE DATOS AL SISTEMA -");
  57. Console.WriteLine("\t\t-----------------------------------------------");
  58. Console.WriteLine(" ");
  59.  
  60. Dato = (rnd.Next(0, 501));
  61.  
  62.  
  63. codigo[contador] = Dato;
  64. Console.WriteLine("Codigo Generado para contacto");
  65. Console.WriteLine(Dato);
  66. Console.WriteLine();
  67. Console.WriteLine("Ingrese Nombre de contacto: ");
  68. nombre[Dato] = Console.ReadLine();
  69. Console.WriteLine();
  70. Console.WriteLine("Ingrese apellido de contacto: ");
  71. apellido[Dato] = Console.ReadLine();
  72. Console.WriteLine();
  73. Console.WriteLine("Ingrese e-mail de contacto: ");
  74. correo[Dato] = Convert.ToString(Console.ReadLine());
  75. Console.WriteLine();
  76. Console.WriteLine("Ingrese Número Telefonico: ");
  77. try
  78. {
  79. telefono[Dato] = Convert.ToInt16(Console.ReadLine());
  80. }
  81. catch (Exception)
  82. {
  83. Console.Beep();
  84. Console.WriteLine("Error Ingreso un codigo alfanumerico ó espacio en blanco, Ingrese de nuevo, Presione ENTER");
  85. Console.ReadLine();
  86. Console.Clear();
  87. Opcion= Menu();
  88. }
  89.  
  90.  
  91. Console.WriteLine();
  92. contador++;
  93.  
  94. Console.WriteLine(contador);
  95. if (Raiz == null)
  96. {
  97. NodoT NuevoNodo = new NodoT();
  98. NuevoNodo.Informacion = Dato;
  99. Raiz = NuevoNodo;
  100. }
  101. else
  102. {
  103. Insertar(Raiz, Dato);
  104. }
  105.  
  106. Console.Clear();
  107. break;
  108.  
  109. //Recorrido en Pre Orden del Arbol
  110. case 2:
  111. RecorridoPreorden(Raiz);
  112. Console.WriteLine("Fin del Recorrido,...");
  113. Console.ReadLine();
  114. Console.Clear();
  115. break;
  116. //Recorrido en Post Orden del Arbol
  117. case 3:
  118.  
  119. RecorridoPostorden(Raiz);
  120. Console.WriteLine("Fin del Recorrido,...");
  121. Console.ReadLine();
  122. Console.Clear();
  123. break;
  124. //Recorrido en In Orden del Arbol
  125. case 4:
  126. RecorridoInorden(Raiz);
  127. Console.WriteLine("Fin del Recorrido,...");
  128. Console.ReadLine();
  129. Console.Clear();
  130. break;
  131. case 5:
  132. Console.Write("Ingrese el Dato a Buscar: ");
  133. Dato = int.Parse(Console.ReadLine());
  134. if (Raiz != null)
  135. {
  136. BuscarNodo(Raiz, Dato);
  137. }
  138. else
  139. {
  140. Console.WriteLine("ERROR, Arbol Vacio....");
  141. }
  142.  
  143.  
  144.  
  145. Console.WriteLine( nombre[Dato]+"\t"+apellido[Dato]+"\t"+correo[Dato]+"\t"+telefono[Dato]);
  146.  
  147. for (int i = 0; i <= 10; i++)
  148. {
  149. Console.WriteLine(codigo[i]);
  150.  
  151. }
  152. Console.WriteLine("\n");
  153. Console.ReadLine();
  154. Console.Clear();
  155. break;
  156. case 6:
  157. Console.Write("Ingrese el Dato a Eliminar: ");
  158. Dato = int.Parse(Console.ReadLine());
  159. if (Raiz != null)
  160. {
  161. EliminarNodo(ref Raiz, Dato);
  162. }
  163. else
  164. {
  165. Console.WriteLine("ERROR, Arbol Vacio....");
  166. }
  167. Console.Clear();
  168. break;
  169. case 7:
  170. Finalizar();
  171. break;
  172. }
  173. } while (Opcion != 7);
  174.  
  175. }
  176. static int Menu()
  177. {
  178.  
  179. int Resultado = 0;
  180. do
  181. {
  182. Console.WriteLine("\t\t-----------------------------------------------");
  183. Console.WriteLine("\t\t- ******** BIENVENIDO ******** -");
  184. Console.WriteLine("\t\t-----------------------------------------------");
  185. Console.WriteLine(" ");
  186.  
  187. Console.WriteLine("MENU DE AGENDA");
  188. Console.WriteLine("");
  189. Console.WriteLine("1.- Registrar un Nuevo contacto");
  190. Console.WriteLine("2.- Recorrido en Pre-orden");
  191. Console.WriteLine("3.- Recorrido en Post-orden");
  192. Console.WriteLine("4.- Recorrido en In-orden");
  193. Console.WriteLine("5.- Buscar un Contacto");
  194. Console.WriteLine("6.- Eliminar un Contacto");
  195. Console.WriteLine("7.- Finalizar el Programa");
  196. Console.WriteLine("");
  197. Console.Write("Ingrese la Opcion Deseada: ");
  198.  
  199. try
  200. {
  201. Resultado = int.Parse(Console.ReadLine());
  202. }
  203. catch (Exception)
  204. {
  205. Console.Beep();
  206. Console.WriteLine("Error Ingreso un codigo alfanumerico ó espacio en blanco, Ingrese de nuevo, Presione ENTER");
  207. Console.ReadLine();
  208. }
  209.  
  210.  
  211.  
  212.  
  213.  
  214. Console.WriteLine("");
  215. if (Resultado < 1 || Resultado > 7)
  216. {
  217. Console.WriteLine("ERROR, Opcion Invalida....");
  218. Console.ReadLine();
  219. Console.WriteLine("");
  220. }
  221. Console.Clear();
  222. } while (Resultado < 1 || Resultado > 7);
  223. return Resultado;
  224. }
  225. //Insertar en un arbol binario
  226. static void Insertar(NodoT Raiz, int Dato)
  227. {
  228. if (Dato < Raiz.Informacion)
  229. {
  230. if (Raiz.NodoIzquierdo == null)
  231. {
  232. NodoT NuevoNodo = new NodoT();
  233. NuevoNodo.Informacion = Dato;
  234. Raiz.NodoIzquierdo = NuevoNodo;
  235. }
  236. else
  237. {
  238. //Llamada recursiva
  239. Insertar(Raiz.NodoIzquierdo, Dato);
  240. }
  241. }
  242. else//Buscar por el lado derecho
  243. {
  244. if (Dato > Raiz.Informacion)
  245. {
  246. if (Raiz.NodoDerecho == null)
  247. {
  248. NodoT NuevoNodo = new NodoT();
  249. NuevoNodo.Informacion = Dato;
  250. Raiz.NodoDerecho = NuevoNodo;
  251. }
  252. else
  253. {
  254. //Llamada recursiva por el lado derecho
  255. Insertar(Raiz.NodoDerecho, Dato);
  256. }
  257. }
  258. else
  259. {
  260. //El Nodo existe en el Arbol
  261. Console.WriteLine("Nodo Existente, Imposible Insertar...");
  262. Console.ReadLine();
  263. }
  264. }
  265. }
  266. //Metodo de recorrido en Pre-Orden
  267. static void RecorridoPreorden(NodoT Raiz)
  268. {
  269. if (Raiz != null)
  270. {
  271. Console.Write("{0}, ", Raiz.Informacion);
  272. RecorridoPreorden(Raiz.NodoIzquierdo);
  273. RecorridoPreorden(Raiz.NodoDerecho);
  274. }
  275. }
  276. //Metodo de recorrido en In-Orden
  277. static void RecorridoInorden(NodoT Raiz)
  278. {
  279. if (Raiz != null)
  280. {
  281. RecorridoInorden(Raiz.NodoIzquierdo);
  282. Console.Write("{0}, ", Raiz.Informacion);
  283. RecorridoInorden(Raiz.NodoDerecho);
  284. }
  285. }
  286. //Metodo de recorrido en Post-Orden
  287. static void RecorridoPostorden(NodoT Raiz)
  288. {
  289. if (Raiz != null)
  290. {
  291. RecorridoPostorden(Raiz.NodoIzquierdo);
  292. RecorridoPostorden(Raiz.NodoDerecho);
  293. Console.Write("{0}, ", Raiz.Informacion);
  294. }
  295. }
  296. //Metodo de Buscar un nodo
  297. static void BuscarNodo(NodoT Raiz, int Dato)
  298. {
  299.  
  300.  
  301. if (Dato < Raiz.Informacion)
  302. {
  303.  
  304. //Buscar por el Sub-Arbol izquierdo
  305. if (Raiz.NodoIzquierdo == null)
  306. {
  307.  
  308. Console.WriteLine("ERROR, No se encuentra el Nodo...");
  309. Console.ReadLine();
  310. }
  311. else
  312. {
  313.  
  314. BuscarNodo(Raiz.NodoIzquierdo, Dato);
  315. }
  316.  
  317. }
  318. else
  319. {
  320.  
  321. if (Dato > Raiz.Informacion)
  322. {
  323.  
  324. //Buscar por el Sub-Arbol derecho
  325. if (Raiz.NodoDerecho == null)
  326. {
  327.  
  328. Console.WriteLine("ERROR, No se encuentra el Nodo...");
  329. Console.ReadLine();
  330. }
  331. else
  332. {
  333.  
  334. BuscarNodo(Raiz.NodoDerecho, Dato);
  335. }
  336. }
  337. else
  338. {
  339.  
  340. //El nodo se encontro
  341. Console.WriteLine("Nodo Localizado en el Arbol... " );
  342. Console.ReadLine();
  343. }
  344. }
  345.  
  346. }
  347.  
  348.  
  349. //public int cant = 0;
  350. //private void Cantidad(NodoT raiz)
  351. //{
  352.  
  353. // if (raiz != null)
  354. // {
  355. // cant++;
  356. // Cantidad(raiz.NodoIzquierdo);
  357. // Cantidad(raiz.NodoDerecho);
  358. // }
  359. //}
  360.  
  361.  
  362. //public int Cantidad()
  363. //{
  364. // cant = 0;
  365. // Cantidad();
  366. // return cant;
  367. //}
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374. //Metodo de Eliminar
  375. static void EliminarNodo(ref NodoT Raiz, int Dato)
  376. {
  377. if (Raiz != null)
  378. {
  379. if (Dato < Raiz.Informacion)
  380. {
  381. EliminarNodo(ref Raiz.NodoIzquierdo, Dato);
  382. }
  383. else
  384. {
  385. if (Dato > Raiz.Informacion)
  386. {
  387. EliminarNodo(ref Raiz.NodoDerecho, Dato);
  388. }
  389. else
  390. {
  391. //Si lo Encontro
  392. NodoT NodoEliminar = Raiz;
  393. if (NodoEliminar.NodoDerecho == null)
  394. {
  395. Raiz = NodoEliminar.NodoIzquierdo;
  396. }
  397. else
  398. {
  399. if (NodoEliminar.NodoIzquierdo == null)
  400. {
  401. Raiz = NodoEliminar.NodoDerecho;
  402. }
  403. else
  404. {
  405. NodoT AuxiliarNodo = null;
  406. NodoT Auxiliar = Raiz.NodoIzquierdo;
  407. bool Bandera = false;
  408. while (Auxiliar.NodoDerecho != null)
  409. {
  410. AuxiliarNodo = Auxiliar;
  411. Auxiliar = Auxiliar.NodoDerecho;
  412. Bandera = true;
  413. }
  414. Raiz.Informacion = Auxiliar.Informacion;
  415. NodoEliminar = Auxiliar;
  416. if (Bandera == true)
  417. {
  418. AuxiliarNodo.NodoDerecho = Auxiliar.NodoIzquierdo;
  419. }
  420. else
  421. {
  422. Raiz.NodoIzquierdo = Auxiliar.NodoIzquierdo;
  423. }
  424. }
  425. }
  426. }
  427. }
  428. }
  429. else
  430. {
  431. Console.WriteLine("ERROR, EL Nodo no se Encuentra en el Arbol...");
  432. Console.ReadLine();
  433. }
  434. }
  435. //Metodo de Finalizacion
  436. static void Finalizar()
  437. {
  438. Console.WriteLine("Fin del Programa, press any key to continue,...");
  439. Console.ReadLine();
  440. }
  441. }
  442. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement