elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Eliminar nodo en un arbol binario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar nodo en un arbol binario  (Leído 29,296 veces)
DaNuK

Desconectado Desconectado

Mensajes: 108


Pobre soñador


Ver Perfil WWW
Eliminar nodo en un arbol binario
« en: 3 Diciembre 2010, 20:56 pm »

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
Código
  1.        public void Eliminar( NodoAB r, int dato)
  2.        {
  3.            NodoAB aux = null, aux1 = null, otro = null;            
  4.            if (dato < r.Dato)
  5.            {
  6.                Eliminar(r.Izq, dato);
  7.            }
  8.            else
  9.            {
  10.                if (dato > r.Dato)
  11.                {
  12.                    Eliminar(r.Der, dato);
  13.                }
  14.                else
  15.                {
  16.                    otro = r;
  17.  
  18.  
  19.                    if (otro != null)
  20.                    {
  21.                        if ((otro.Der == null) && (otro.Izq == null))
  22.                        {
  23.                            otro = null;
  24.                        }
  25.                        else
  26.                        {
  27.                            if (otro.Der == null)
  28.                            {
  29.                                r = otro.Izq;
  30.  
  31.                            }
  32.                            else
  33.                                if (otro.Izq == null)
  34.                                {
  35.                                    r= otro.Der;
  36.  
  37.                                }
  38.                                else
  39.                                {
  40.                                    aux = otro.Izq;
  41.                                    aux1 = aux;
  42.                                    while (aux.Der != null)
  43.                                    {
  44.                                        aux1 = aux;
  45.                                        aux = aux.Der;
  46.                                    }
  47.                                    otro.Dato = aux.Dato;
  48.                                    otro = aux;
  49.                                    aux1.Der = aux.Izq;
  50.                                    aux = null;
  51.  
  52.                                }
  53.                        }
  54.                    }
  55.                    else
  56.                        System.Windows.Forms.MessageBox.Show("Dato no encontrado en el arbol");
  57.                }
  58.            }
  59.        }
  60.  
espero me puedan ayudar


En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Eliminar nodo en un arbol binario
« Respuesta #1 en: 3 Diciembre 2010, 22:54 pm »

Podrias poner como queda el arbol al principio y al final?


En línea

DaNuK

Desconectado Desconectado

Mensajes: 108


Pobre soñador


Ver Perfil WWW
Re: Eliminar nodo en un arbol binario
« Respuesta #2 en: 5 Diciembre 2010, 01:25 am »

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
Código
  1. Public int ContarH(NodoAB r)
  2. {
  3.    if(r==null)
  4.         return 0;
  5.    if(r.der==null && r.izq==null)
  6.         return 1;
  7.    else
  8.         return (ContarH(r.der)+ContarH(r.izq));
  9. }
  10.  

espero me puedan ayudar
En línea

EddyC

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Eliminar nodo en un arbol binario
« Respuesta #3 en: 5 Diciembre 2010, 21:16 pm »

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 :

Código:
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
« Última modificación: 5 Diciembre 2010, 21:29 pm por EddyC » En línea

DaNuK

Desconectado Desconectado

Mensajes: 108


Pobre soñador


Ver Perfil WWW
Re: Eliminar nodo en un arbol binario
« Respuesta #4 en: 6 Diciembre 2010, 20:19 pm »

Lo que yo quiero es saber cuantos nodos de bifurcacion hay en un arbol binario
ejemplo:

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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
eliminar ancestros de hojas arbol binario c++
Programación C/C++
Lain SEL 2 7,008 Último mensaje 18 Agosto 2010, 04:05 am
por Lain SEL
Borrar nodo de un arbol
Programación C/C++
karmi 2 7,490 Último mensaje 10 Diciembre 2010, 18:02 pm
por do-while
[C] Eliminando Nodo de Arbol Binario (Solucionado)
Programación C/C++
AlbertoBSD 5 16,181 Último mensaje 31 Mayo 2016, 05:01 am
por AlbertoBSD
leer un documento HTML,cada etiqueta debe guardarse en un nodo de un árbol
Programación C/C++
mcMario 0 1,940 Último mensaje 12 Diciembre 2016, 02:40 am
por mcMario
Insertar nodo en Arbol Generico
Software
EASoft 0 1,720 Último mensaje 21 Agosto 2019, 15:03 pm
por EASoft
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines