Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: M3LiNdR1 en 16 Septiembre 2013, 20:41 pm



Título: Implementación de Arboles binarios
Publicado por: M3LiNdR1 en 16 Septiembre 2013, 20:41 pm
Buenas tardes,


Llevó todo el dia peleandome con una clase, para implementar arboles binarios, el codigo es el siguiente:

//Archivo Tree.cpp
Código
  1. struct Node {
  2. int info;
  3. Node *fesq;
  4. Node *fdre;
  5. };
  6.  
  7. class Tree {
  8.  
  9. private:
  10.  
  11. Node *root;
  12.  
  13. public:
  14.  
  15. Tree(int);
  16. void insertar(int);
  17. void plantar(int, Node &, Node&);
  18. };

//Codigo Tree.cpp
Código
  1. Tree::Tree(int value) {
  2. root->info = value;
  3. root->fesq = NULL;
  4. root->fdre = NULL;
  5. }
  6.  
  7. void Tree::plantar(int value, Node & f1, Node & f2) {
  8. root->info = value;
  9. root->fesq = f1;
  10. root->fdre = f2;
  11. }
  12.  
  13. void Tree::insertar(int value) {
  14.     if (root ==NULL) {
  15.         root->info = value;
  16.         root->fesq = NULL;
  17.         root->fdre = NULL;
  18.     }
  19.     else if(x < root->info) root->fesq.insertar(x);
  20.     else if(x > root->info) root->fdre.insertar(x);
  21. }
  22.  

Primer problema, visual studio me dice que root no se puede comparar con NULL, entonces como puedo saber si un hijo esta vacio???

Segundo problema, nose com implementar la función de insertar. Se que esta mal porque estoy llamando desde un nodo, un metodo que no existe y que tiene arbol.

Nose, tengo ya los nervios a flor de piel y lo siguiente que haré sera amenazar mi portatil con una tostadora xD


Título: Re: Implementación de Arboles binarios
Publicado por: amchacon en 16 Septiembre 2013, 20:57 pm
¿? Root si que se puede comparar con NULL (o con cero que es lo mismo). Revisa el error otra vez.

En la función insertar no usaría una lista enlazada sino un vector/array puesto que necesitas hacer muchos accesos aleatorios.


Título: Re: Implementación de Arboles binarios
Publicado por: M3LiNdR1 en 17 Septiembre 2013, 02:35 am
Cierto, si se pueden comparar, paranoias del compilador!!!

Lo curioso es que un mètodo que devuelve un objeto, no puede devolver NULL, aaarghhh, demasiado tiempo jugando con Java!

Por otra parte, mi inspiración ha vuelto a mi, mañana os prometo noticias  :D

Saludos!


Título: Re: Implementación de Arboles binarios
Publicado por: amchacon en 17 Septiembre 2013, 12:02 pm
Lo curioso es que un mètodo que devuelve un objeto, no puede devolver NULL, aaarghhh, demasiado tiempo jugando con Java!
Para eso tendrías que devolver un puntero a objeto. De lo contrario estarías devolviendo un objeto entero.