Saludos a todos compañeros del foro vengo a molestarlos por que me he topado con un problema al querer eliminar un nodo en un arbol a continuacion les pongo el codigo aplica para los tres casos
Problema: no me elimina el nodo
public void Eliminar( NodoAB r, int dato)
{
NodoAB aux = null, aux1 = null, otro = null;
if (dato < r.Dato)
{
Eliminar(r.Izq, dato);
}
else
{
if (dato > r.Dato)
{
Eliminar(r.Der, dato);
}
else
{
otro = r;
if (otro != null)
{
if ((otro.Der == null) && (otro.Izq == null))
{
otro = null;
}
else
{
if (otro.Der == null)
{
r = otro.Izq;
}
else
if (otro.Izq == null)
{
r= otro.Der;
}
else
{
aux = otro.Izq;
aux1 = aux;
while (aux.Der != null)
{
aux1 = aux;
aux = aux.Der;
}
otro.Dato = aux.Dato;
otro = aux;
aux1.Der = aux.Izq;
aux = null;
}
}
}
else
System.Windows.Forms.MessageBox.Show("Dato no encontrado en el arbol");
}
}
}
espero me puedan ayudar
Podrias poner como queda el arbol al principio y al final?
Ya resolvi el problema de eliminar pero ahora me surgio otra duda como contar nodos intermedios
el siguiente codigo es para contar hojas o terminales que le podria modificar para contar nodos intermedios
Public int ContarH(NodoAB r)
{
if(r==null)
return 0;
if(r.der==null && r.izq==null)
return 1;
else
return (ContarH(r.der)+ContarH(r.izq));
}
espero me puedan ayudar
si te referis con nodos intermedios a que le mandas una altura y contas todos los de esa altura es facil te escribo el pseudo :
mostrarnodosalt(puntero a raiz *R , entero de altura que queres mostrar )
{int n;
if (*r)
{ if(altura==1)
n=1;
else
{if(h<1)
return 0;
n=0;
}
return mostrarnodosalt(r por izquierda, altura - 1 ) + mostrarnodosalt(r por derecha , altura -1) + n ;
}
return 0;
}
si no te referias a esto decime y veo si te puedo ayudar , saludos
Lo que yo quiero es saber cuantos nodos de bifurcacion hay en un arbol binario
ejemplo:
(http://img232.imageshack.us/img232/3941/gesl.jpg)
en el arbol anterior hay dos nodos de bifurcacion el 8 y el 17 lo que quiero es que el programa me diga cuantos nodos de bifurcacion hay en un arbol
espero me haya explicado ayudenme porfavor