Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa corto de búsqueda en arbol binario

Estas en el tema de Programa corto de búsqueda en arbol binario en el foro de C/C++ en Foros del Web. Que tal, estoy haciendo un programa que busca un número en un arbol binario. Estoy usando una solución recursiva.El tema es que me encuentra mal ...
  #1 (permalink)  
Antiguo 27/04/2009, 19:44
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Programa corto de búsqueda en arbol binario

Que tal, estoy haciendo un programa que busca un número en un arbol binario.
Estoy usando una solución recursiva.El tema es que me encuentra mal las posiciones.

La función de búsqueda es, teniendo en cuenta que el arbol tiene los menores a la izquierda y los mayores a la derecha, y que el hijo izquierdo ocupa la posición 2*i+1 y el hijo derecho 2*i+2 , siendo i la posición del padre en el vector:

Última edición por juanf03; 27/04/2009 a las 20:55
  #2 (permalink)  
Antiguo 27/04/2009, 19:57
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Programa corto de búsqueda en arbol binario

Cuando pongo a buscar el 4 me dice que esta en la posición 8 cuando tendría que estar en la 11, asi con todos los numeros, me tira mal las posiciones....

Última edición por juanf03; 27/04/2009 a las 20:21
  #3 (permalink)  
Antiguo 27/04/2009, 20:42
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Programa corto de búsqueda en arbol binario

Ahí corregí unas cosas, me da bien en todas las posiciones menos para el 4 que esta en el 11 y el 7 que esta en la posición 12 del vector, el código me quedó así:

Código:
// Arbol.cpp: define el punto de entrada de la aplicación de consola.
//

#include "stdafx.h"
#define NULL -24
int h;

int buscar(int vecNod[ ],int i, int num)
{
	if(num==vecNod[i])
	return i;
	
	else
	{
		if(num>vecNod[i])
		{if((h=buscar(vecNod,(2*i+2),num))>=0)
		return h;}
		else
		{if((h=buscar(vecNod,(2*i+1),num))>=0)
				return h;}
	}
	
	if(vecNod[i]==NULL)
	return 0;
}


int main ( ) {
    
int i=0,vecNod[13],numero,resultado;

       for(i=0;i<13;i++)
		vecNod[i]=NULL;

		vecNod[0]=3;
		vecNod[1]=2;
		vecNod[2]=8;
		vecNod[3]=1;
		vecNod[5]=5;
		vecNod[11]=4;
		vecNod[12]=7;
  	
	printf("Ingrese el número que desea buscar \n");
	scanf("%d",&numero);
	
	resultado=buscar(vecNod,0,numero);
	    printf("Esta en la posición %d del vector",resultado);

	scanf("%d",i);//agregado para poder ver el resultado y que no se cierre
}

Última edición por juanf03; 27/04/2009 a las 20:56
  #4 (permalink)  
Antiguo 27/04/2009, 20:58
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Programa corto de búsqueda en arbol binario

Asunto solucionado, cierren el thread....(me autocontesté, pero bue jajajaja).....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:19.