C sharp - arboles binarios

 
Vista:

arboles binarios

Publicado por alfonso list (31 intervenciones) el 25/01/2007 08:16:33
Alguien conoce como se crean arboles binarios en c sharp, si existe alguna estructura ya implementada o hay que hacela desde el comienzo como en C o C++.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:arboles binarios

Publicado por Yamil Bracho (1164 intervenciones) el 25/01/2007 19:27:48
Chequea el link http://msdn2.microsoft.com/en-us/library/ms379572(VS.80).aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:arboles binarios

Publicado por Dante Jara (1 intervención) el 26/01/2007 23:05:06
using System;
using System.Collections.Generic;
using System.Text;

namespace ArbolBB
{
public class CArbolBB
{
private CArbolBB aSubArbolIzq;
private object aRaiz;
private CArbolBB aSubArbolDer;

public CArbolBB()
{
aSubArbolIzq = null;
aRaiz = null;
aSubArbolDer = null;
}

public CArbolBB(CArbolBB pSubArbolIzq, object pRaiz, CArbolBB pSubArbolDer)
{
aSubArbolIzq = pSubArbolIzq;
aRaiz = pRaiz;
aSubArbolDer = pSubArbolDer;
}
public static CArbolBB Crear()
{
return new CArbolBB();
}

public static CArbolBB Crear(CArbolBB pSubArbolIzq, object pRaiz, CArbolBB pSubArbolDer, CArbolBB pPadre)
{
return new CArbolBB(pSubArbolIzq, pRaiz, pSubArbolDer);
}

public CArbolBB SubArbolIzq
{
get
{
return aSubArbolIzq;
}
set
{
aSubArbolIzq = value;
}
}

public object Raiz
{
get
{
return aRaiz;
}
set
{
aRaiz = value;
}
}

public CArbolBB SubArbolDer
{
get
{
return aSubArbolDer;
}
set
{
aSubArbolDer = value;
}
}

public bool EstaVAcio()
{
return (aRaiz == null);
}

public void Agregar(object Elemento)
{
if (aRaiz == null)
{
aRaiz = Elemento;
}
else
{
if (Elemento.ToString().CompareTo(aRaiz.ToString()) < 0)
{
if (aSubArbolIzq == null)
{
aSubArbolIzq = new CArbolBB(null, Elemento, null);
}
else
{
aSubArbolIzq.Agregar(Elemento);
}
}
else
{
if (aSubArbolDer == null)
{
aSubArbolDer = new CArbolBB(null, Elemento, null);
}
else
{
aSubArbolDer.Agregar(Elemento);
}
}
}
}

public void Eliminar(object pRaiz)
{

}

public CArbolBB SubArbol(object pRaiz)
{
if (EstaVAcio())
{
return null;
}
else
{
if (aRaiz.Equals(pRaiz))
{
return this;
}
else
{
if (pRaiz.ToString().CompareTo(aRaiz.ToString()) < 0)
{
return aSubArbolIzq != null ? aSubArbolIzq.SubArbol(pRaiz) : null;
}
else
{
return aSubArbolDer != null ? aSubArbolDer.SubArbol(pRaiz) : null;
}
}
}
}

public CArbolBB Padre(object pRaiz)
{
if (EstaVAcio())
return null;
else
if (EsHijo(pRaiz))
return this;
else
if (pRaiz.ToString().CompareTo(aRaiz.ToString()) < 0)
return aSubArbolIzq != null ? aSubArbolIzq.Padre(pRaiz) : null;
else
return aSubArbolDer != null ? aSubArbolDer.Padre(pRaiz) : null;
}

public bool EsHijo(Object pRaiz)
{
return((((aSubArbolIzq!=null)&&(aSubArbolIzq.Raiz.Equals(pRaiz)))||((aSubArbolDer!=null)&&(aSubArbolDer.Raiz.Equals(pRaiz)))));
}

public object Minimo()
{
if (EstaVAcio())
return null;
else
return SubArbolIzq == null ? aRaiz : aSubArbolIzq.Minimo();
}

public object Maximo()
{
if (EstaVAcio())
return null;
else
return SubArbolIzq == null ? aRaiz : aSubArbolIzq.Maximo();
}

public int Altura()
{
if (EstaVAcio())
return 0;
else
{
int AlturaIzq = (aSubArbolIzq == null ? 0 : 1 + aSubArbolIzq.Altura());
int AlturaDer = (aSubArbolDer == null ? 0 : 1 + aSubArbolDer.Altura());
return (AlturaIzq > AlturaDer ? AlturaIzq : AlturaDer);
}
}

public void PreOrden()
{
if (aRaiz != null)
{
Console.WriteLine(aRaiz.ToString());
if (aSubArbolIzq != null)
aSubArbolIzq.PreOrden();
if (aSubArbolDer != null)
aSubArbolDer.PreOrden();
}
}

public void InOrden()
{
if (aRaiz != null)
{
if (aSubArbolIzq != null)
aSubArbolIzq.InOrden();
Console.WriteLine(aRaiz.ToString());
if (aSubArbolDer != null)
aSubArbolDer.InOrden();
}
}

public void PostOrden()
{
if (aRaiz != null)
{
if (aSubArbolIzq != null)
aSubArbolIzq.PostOrden();
if (aSubArbolDer != null)
aSubArbolDer.PostOrden();
Console.WriteLine(aRaiz.ToString());
}
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:arboles binarios

Publicado por alfonso (31 intervenciones) el 29/01/2007 08:27:24
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:arboles binarios

Publicado por poncho (1 intervención) el 06/04/2014 07:33:38
sabes hacer esto pero en windows forms ? me ayudarias a desarrolarlo ? cuanto me cobrarias ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar