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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con arboles binarios en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con arboles binarios en c++  (Leído 3,595 veces)
cyntiao.

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con arboles binarios en c++
« en: 22 Julio 2013, 17:20 pm »

Hola a todos!, estoy estudiando programación, y tengo un ejercicio sobre arboles binarios. El ejercicio me pide encontrar el segundo mayor y el segundo menor de un árbol binario. Tengo el código de como encontrar el mayor, aquí les dejo, si alguien puede ayudarme se le agradecería mucho :)

int buscarmenor(ABB arbol)
{
 int menor;
 while(arbol->izq!=NULL)
      arbol=arbol->izq;
 menor=arbol->valor;
 return menor;
}

int buscarmayor(ABB arbol)
{
 int mayor;
 while(arbol->der!=NULL)
      arbol=arbol->der;
 mayor=arbol->valor;
 return mayor;
}


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda con arboles binarios en c++
« Respuesta #1 en: 22 Julio 2013, 22:25 pm »

Sabes cómo funcionan los árboles binarios?

Si la respuesta es sí, sabes que cada nodo tiene un valor... los nodos de la izquierda tienen un valor inferior y los de la derecha un valor mayor.

Con esta idea fácilmente puedes adivinar que, tomando como referencia los 3 últimos nodos de la izquierda, puedes tener 3 escenarios diferentes:

     A                 A                 A
    /                  / \                  \
   B                 B  C                 C

En el 1er caso, tenemos que el nodo A tiene un valor X y, por fuerza, el nodo B tiene un valor necesariamente menor, luego en este caso el valor buscado sería A.

En el 2º caso, A tiene un valor X, B es menor y C es el mayor de los 3... el valor buscado es el del nodo A.

En el 3er caso, A tiene un valor inferior al B... el valor buscado es el del nodo B.

Con esta información, una opción sería diseñar un algoritmo que recorra la rama izquierda de cada nodo, empezando por el raiz. Una vez localizado el último grupo de nodos... mirar a ver si es del tipo 1, 2 o 3 y devolver el resultado correspondiente.

Otra opción podría ser recorrer todo el árbol y almacenar los dos números más pequeños que te encuentres... con eso tendrías el número más pequeño y, el buscado, el segundo más pequeño.

Para el caso del segundo mayor la lógica a implementar sería similar. Ya es gusto del programador ( es decir, tu decisión ), elegir la opción que crea más adecuada.

Un saludo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Árbol eneario y String con arboles binarios
Programación C/C++
Garethderioth 1 6,265 Último mensaje 1 Noviembre 2010, 01:51 am
por Littlehorse
ayuda en arboles binarios
Programación C/C++
josue_tux 1 3,054 Último mensaje 25 Junio 2011, 14:10 pm
por satu
ayuda urgente en arboles binarios
Programación C/C++
josue_tux 1 4,137 Último mensaje 10 Julio 2011, 16:04 pm
por Triper0
arboles binarios ayuda con eliminacion de nodos
Programación C/C++
landerzx 2 3,951 Último mensaje 14 Noviembre 2011, 16:18 pm
por landerzx
Ayuda para visualizar garfos y arboles
Programación C/C++
tai96 3 3,152 Último mensaje 15 Junio 2016, 02:33 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines