Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo
Implemente la estructura de datos arboles utilizando C#. NET. Conozca los recorridos ms comunes en los rboles.
Introduccin
En ciencias de la computacin, un rbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener ms de dos hijos (de ah el nombre Binario). Si algn hijo tiene como referencia a null, es decir que no almacena ningn dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno.
Terminologa:
Nodo: Cada elemento en un rbol. Nodo Raz: Primer elemento agregado al rbol.
Programacin III, Gua 7 2 Nodo Hijo: Es el nodo sucesor de un elemento. Nodo Hermano: Nodos que tienen el mismo nodo padre.
Algoritmos:
Recorrido PreOrden(RID)
void preOrden(ArbolBinario raz) { if(raiz) { visitar(raiz>dato) preOrden(raiz>izq) preOrden(raiz>der) } } El recorrido en PreOrden del rbol es el siguiente: 15, 6, 4, 10, 20, 17, 22
Materiales y equipo
Gua de Laboratorio N 7. Computadora con programa: o Visual Studio 2005. C# Dispositivo de Almacenamiento (USB).
Procedimiento
using System; using System.Collections.Generic; using System.Text; namespace arboles { public class NodoT { public NodoT NodoIzquierdo; public int Informacion; public NodoT NodoDerecho; //Constructor public NodoT() { this.NodoIzquierdo = null; this.Informacion = 0; this.NodoDerecho = null; } } class Program { static void Main(string[] args) { int Opcion = 0; NodoT Raiz = null; int Dato; do { Opcion = Menu(); switch (Opcion) { case 1: Console.Write("Valor del Nuevo Nodo: "); Dato = int.Parse(Console.ReadLine()); if (Raiz == null) { NodoT NuevoNodo = new NodoT(); NuevoNodo.Informacion = Dato; Raiz = NuevoNodo; } else { Insertar(Raiz, Dato); } Console.Clear(); break; //Recorrido en Pre Orden del Arbol case 2: RecorridoPreorden(Raiz); Console.WriteLine("Fin del Recorrido,..."); Console.ReadLine(); Console.Clear(); break; //Recorrido en Post Orden del Arbol case 3: RecorridoPostorden(Raiz); Console.WriteLine("Fin del Recorrido,..."); Console.ReadLine(); Console.Clear(); break; //Recorrido en In Orden del Arbol
} static int Menu() { int Resultado = 0; do { Console.WriteLine("MENU DE ARBOLES"); Console.WriteLine(""); Console.WriteLine("1.- Registrar un Nuevo Nodo"); Console.WriteLine("2.- Recorrido en Pre-orden"); Console.WriteLine("3.- Recorrido en Post-orden"); Console.WriteLine("4.- Recorrido en In-orden"); Console.WriteLine("5.- Buscar un Nodo"); Console.WriteLine("6.- Eliminar un Nodo"); Console.WriteLine("7.- Finalizar el Programa"); Console.WriteLine(""); Console.Write("Teclee la Opcion Deseada: "); Resultado = int.Parse(Console.ReadLine()); Console.WriteLine(""); if (Resultado < 1 || Resultado > 7) { Console.WriteLine("ERROR, Opcion Invalida...."); Console.ReadLine(); Console.WriteLine(""); } Console.Clear(); } while (Resultado < 1 || Resultado > 7);
Anlisis de resultados
Crear un mtodo al ejercicio anterior, que realice el recorrido en INORDEN
Investigacin complementaria.
Como determinar la altura del rbol. Como determinar la profundidad de un nodo Como determinar el nmero de nodos en cualquier momento.
Bibliografa.
DEITEL, HARVEY M. / DEITEL, PAUL J. Cmo programar en C#. Editorial Pearson Prentice Hall, Mxico 2004.
http://www.ucema.edu.ar/~rst/Algoritmos_y_Estructura_de_Datos/Teoria/5._Arboles_binar ios.pdf
11
Hoja de cotejo:
7 1
Alumno: Docente:
CONOCIMIENTO
40
40
ACTITUD 20
TOTAL 100%