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

Como funciona esté código?... árbol binario

Estas en el tema de Como funciona esté código?... árbol binario en el foro de C/C++ en Foros del Web. Hola que tal...bueno eh estado harto rato intentando de entender como funcionan los arboles binarios...capte algo pero no entiendo como pasarlo a código... Encontre en ...
  #1 (permalink)  
Antiguo 19/12/2010, 21:32
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 9 meses
Puntos: 6
Pregunta Como funciona esté código?... árbol binario

Hola que tal...bueno eh estado harto rato intentando de entender como funcionan los arboles binarios...capte algo pero no entiendo como pasarlo a código...

Encontre en la web estos códigos para insertar datos en el árbol:

Código C++:
Ver original
  1. struct arbol{
  2. int info;
  3. struct arbol *left;
  4. struct arbol *right;
  5. };
  6. typedef struct arbol nodetree;
  7. typedef nodetree *arbolptr;
  8. void insertar(arbolptr*L, int b);
  9.  
  10. void insertar(arbolptr*r,int x)
  11. {
  12. arbolptr pnuevo,panterior,pactual;
  13. pnuevo=(arbol*)malloc(sizeof(arbol));
  14.  
  15. if(pnuevo!=NULL)
  16. {
  17. pnuevo->info=x;
  18. pnuevo->right=NULL;
  19. pnuevo->left=NULL;
  20. panterior=NULL;
  21. pactual=*r;
  22. printf("%d",pnuevo->info);
  23. while(pactual!=NULL && x>pactual->info)
  24. {
  25. panterior=pactual;
  26. pactual=pactual->left;
  27. }
  28. if(panterior==NULL)
  29. {
  30. pnuevo->left=*r;
  31. *r=pnuevo;
  32. }
  33. else
  34. {
  35. panterior->left=pnuevo;
  36. pnuevo->left=pactual;
  37. }
  38. }
  39. }


Bueno y recurro hacia Ud. para que alguno me pueda ayudar a recorrer el código, indicándome mas o menos como funciona ... que la verdad entiendo la mitad =(

se que es algo tedioso, asi que les estaré muy agradecido si me ayudan.
Espero sus respuestas..de ante mano muchas gracias!
  #2 (permalink)  
Antiguo 20/12/2010, 11:54
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Como funciona esté código?... árbol binario

entiendes lo que son las listas lineales??

es importante que las entiendas bien, puesto que los arboles son un poco mas complicados.

si no las has mirado, estudiatelas, y ya veras como luego los arboles te resultan mas faciles.
  #3 (permalink)  
Antiguo 20/12/2010, 13:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años
Puntos: 1
Respuesta: Como funciona esté código?... árbol binario

Arboles y Listas diferentes esrtucturas no confundas entre lineales y no lineales en listas no existen enorden postorden inorden, los arboles pueden estar equilibrados o perfectamente equilibrados.
El codigo es muy simple son apuntadores tanto de flecha y punto. En si que quieres saber del codigo
  #4 (permalink)  
Antiguo 20/12/2010, 13:43
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 9 meses
Puntos: 6
Respuesta: Como funciona esté código?... árbol binario

Cita:
Iniciado por vnvnation Ver Mensaje
Arboles y Listas diferentes esrtucturas no confundas entre lineales y no lineales en listas no existen enorden postorden inorden, los arboles pueden estar equilibrados o perfectamente equilibrados.
El codigo es muy simple son apuntadores tanto de flecha y punto. En si que quieres saber del codigo
Las listas solo conozco listas simples, dobles, y dobles circulares....

en fin...lo que no entiendo mucho son los punteros (-->) ..como funcionan?...

y estas lineas :

typedef struct arbol nodetree;
typedef nodetree *arbolptr;

tampoco se que hacen y para que sirven...

AH!...y e visto en codigos de estructuras de datos unos ** y * ...que funcion tienen?....como se leen?..
por ejemplo este pedazo de codigo que saque de otro programa..

void agrega(nodo **cab, nodo **fin){

Muchas gracias denuevo!
espero tu respuesta ;)

Última edición por ras_chalo; 20/12/2010 a las 13:50
  #5 (permalink)  
Antiguo 20/12/2010, 14:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años
Puntos: 1
Respuesta: Como funciona esté código?... árbol binario

Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable que contiene el dato. Los apuntadores también deben de seguir las mismas reglas que se aplican a las demás variables, deben tener nombre únicos y deben de declararse antes de usarse.

Construccion de ED Arbol Binario

Código C++:
Ver original
  1. typedef int TipoElemento;
  2. typedef struct nodo
  3. {
  4.     TipoElemento    dato;
  5.     struct nodo *izq;
  6.     struct nodo *der;
  7.    
  8. }Nodo;
  9.  
  10. typedef Nodo *ArbolBinario;

typedef:Su función es asignar un nombre alternativo a tipos existentes, a menudo cuando su declaración normal es aparatosa, potencialmente confusa o probablemente variable de una implementación a otra.


Funciones basicas de Arbol Binario

Código C++:
Ver original
  1. ArbolBinario crearNodo(TipoElemento x)
  2.  { ArbolBinario a;
  3.  a=(ArbolBinario)malloc(sizeof(Nodo));
  4.  a->dato=x;
  5.  a->izq=a->der=NULL;
  6.  return a;
  7.  }
  8.  //fin de crear nodo
  9.  
  10.  
  11. //Nuevo arbol
  12. void NuevoArbol(ArbolBinario *raiz,ArbolBinario ramaIzq,TipoElemento X,ArbolBinario ramaDer )
  13. {
  14.      *raiz=crearNodo(X);
  15.      (*raiz)->izq=ramaIzq;
  16.      (*raiz)->der=ramaDer;
  17.      
  18.      }


Por ejemplo el apuntador -> se usa cuando una variable tiene un apuntador (*) o se dice que si usar (*) es por que va a cambiar de valor,como puedes ver en las funciones basicas, cuando no tine apuntador (*) se usa (.).

Etiquetas: binario
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 14:58.