Está en la página 1de 6

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA DE SISTEMAS


INGENIERÍA EN SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

PERÍODO ACADÉMICO: 2017B


PROFESOR: Marco Molina
FECHA DE ENTREGA: 27/11/2017

CÓDIGO

CLASE NODO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ArbolBinario
{
class Nodo
{
public int dato;
public Nodo derecho, izquierdo;

public Nodo()
{
}

public Nodo(int dato)


{
this.dato = dato;
this.derecho = null;
this.izquierdo = null;
}
override
public String ToString()
{
return "dato"+dato ;
}
}
}
CLASE ARBOL BINARIO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ArbolBinario
{
class ArbolBinario
{
public Nodo raiz;

public ArbolBinario()
{
}

public ArbolBinario(Nodo raiz)


{
this.raiz = null;
}
public void insertarDato(int dato)
{
Nodo nuevo = new Nodo(dato);
if (raiz == null)
{
raiz = nuevo;
}
else
{

Nodo aux = raiz;


Nodo padre;
while(true)
{
padre = aux;
if (dato < aux.dato)
{
aux = aux.izquierdo;

if (aux == null)
{
padre.izquierdo = nuevo;
return;
}
}
else
{
aux = aux.derecho;
if (aux == null)
{
padre.derecho = nuevo;
return;
}
}
}
}

}
public Boolean estaVacio()
{ return raiz == null;
}
public void intOrden(Nodo raiz)
{
if (raiz != null)
{
intOrden(raiz.izquierdo);
Console.Write("\n");
Console.Write(raiz.dato);
Console.Write("\n");
intOrden(raiz.derecho);
}
}
public void preOrden(Nodo raiz)
{
if (raiz != null)
{
Console.Write(raiz.dato);
Console.Write("\n");
preOrden(raiz.izquierdo);
Console.Write("\n");
preOrden(raiz.derecho);
}
}
public void postOrden(Nodo raiz)
{
if (raiz != null)
{

postOrden(raiz.izquierdo);
Console.Write("\n");
postOrden(raiz.derecho);
Console.Write("\n");
Console.Write(raiz.dato);

}
}
public Nodo buscar(int datoBuscado)
{
Nodo auxiliar = raiz;
while (auxiliar.dato != datoBuscado)
{
if (datoBuscado< auxiliar.dato) {
auxiliar = auxiliar.izquierdo;
}else
{
auxiliar = auxiliar.derecho;
}
if (auxiliar == null)
{
return null;
}

}
return auxiliar;
}
}
}
CLASE APLICACIÓN
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ArbolBinario
{
class Aplicacion
{
static void Main(string[] args)
{
ArbolBinario arbol = new ArbolBinario();
int op = 0;
do
{
Console.WriteLine("1.INGRESE DATO EN EL ARBOL\n2.RECORRIDO
INORDEN\n3.RECORRIDO PREORDEN\n4.RECORRIDO POSTORDEN\n5.BUSCAR\n6.SALIR");
op = int.Parse(Console.ReadLine());
switch (op)
{

case 1:
Console.WriteLine("INGRESE DATO EN EL ARBOL");
int dato = int.Parse(Console.ReadLine());
arbol.insertarDato(dato);
break;
case 2:
if (!arbol.estaVacio ())
{
Console.WriteLine("RECORRIDO INORDEN:");
arbol.intOrden(arbol.raiz);
Console.WriteLine("\n");
}
else
{
Console.WriteLine("ARBOL VACIO");
}
break;
case 3:
if (!arbol.estaVacio())
{
Console.WriteLine("RECORRIDO PREORDEN:");
arbol.preOrden(arbol.raiz);
Console.WriteLine("\n");
}
else
{
Console.WriteLine("ARBOL VACIO");
}
break;
case 4:
if (!arbol.estaVacio())
{
Console.WriteLine("RECORRIDO POSTORDEN:");
arbol.postOrden(arbol.raiz);
Console.WriteLine("\n");
}
else
{
Console.WriteLine("ARBOL VACIO");
}
break;
case 5:
if (!arbol.estaVacio())
{
Console.WriteLine("DATO A BUSCAR:");
int dat = int.Parse(Console.ReadLine());
if (arbol.buscar(dat) == null)
{
Console.WriteLine("NO EXISTE");
}
else
{
Console.WriteLine("SI EXISTE");
}
}
else
{
Console.WriteLine("ARBOL VACIO");
}
break;
case 6:
break;
}
} while (op != 6);
}
}
}

RESULTADOS

También podría gustarte