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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como se libera la memoria de un arbol?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: como se libera la memoria de un arbol?  (Leído 4,782 veces)
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
como se libera la memoria de un arbol?
« en: 17 Noviembre 2018, 06:31 am »

Me surgio esa duda con arboles binarios  :huh:


En línea

7w7
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: como se libera la memoria de un arbol?
« Respuesta #1 en: 17 Noviembre 2018, 11:25 am »

Vas buscando las hojas, nodos que no tienen hijos, y los liberas. Y así sucesivamente asta que liberas la raíz.


En línea

Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: como se libera la memoria de un arbol?
« Respuesta #2 en: 17 Noviembre 2018, 16:00 pm »

Y el padre de esa hoja no deberia apuntar a NULL antes de hacer el delete(); de la hoja?
Mejor dicho, primero extraigo la hoja, luego hago que su padre apunte a NULL, y recien hago el delete(extraido);

Código
  1. extraido=hoja;
  2. padre_de_la_hoja->izquierda o derecha(dependiendo en que direccion tenga a su hijo)=NULL;
  3. delete(extraido);
« Última modificación: 17 Noviembre 2018, 16:43 pm por Beginner Web » En línea

7w7
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: como se libera la memoria de un arbol?
« Respuesta #3 en: 17 Noviembre 2018, 16:09 pm »

Tener referencias hacia nodos liberados tendrá problemas si decides desrefenciarlas, si no es así, no habrá problema alguno.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: como se libera la memoria de un arbol?
« Respuesta #4 en: 17 Noviembre 2018, 19:31 pm »

Y esto estaria bien? no me convence, creo que estoy confundiendo todo con listas :c
Código
  1. void freememory(tree &bts)
  2. {
  3. if(bts!=NULL){
  4.    freememory(bts->left);
  5.    freememory(bts->right);
  6.    free(bts);
  7.   }
  8. }
En línea

7w7
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: como se libera la memoria de un arbol?
« Respuesta #5 en: 17 Noviembre 2018, 19:42 pm »

Si esta bien, la solucion recursiva que muestras si lo es.

saludos!
En línea

Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: como se libera la memoria de un arbol?
« Respuesta #6 en: 17 Noviembre 2018, 21:04 pm »

Mmmm la verdad no me funciona, sera porque cree los nodos con new y deberia usar delete?  :huh:
En línea

7w7
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: como se libera la memoria de un arbol?
« Respuesta #7 en: 17 Noviembre 2018, 22:29 pm »

Mmmm la verdad no me funciona, sera porque cree los nodos con new y deberia usar delete?  :huh:

De hecho.
En línea

Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: como se libera la memoria de un arbol?
« Respuesta #8 en: 17 Noviembre 2018, 22:55 pm »

Si hago esto funciona, pero me gustaria saber si de verdad el arbol quedo liberado del todo, pero ya me dio flojera
Código
  1. void freememory(tree &bts)
  2. {
  3. if(bts!=NULL){
  4.    freememory(bts->left);
  5.    freememory(bts->right);
  6.    delete(bts);
  7.    bts=NULL;
  8.   }
  9. }
« Última modificación: 17 Noviembre 2018, 23:25 pm por Beginner Web » En línea

7w7
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: como se libera la memoria de un arbol?
« Respuesta #9 en: 17 Noviembre 2018, 23:19 pm »

Puedes estar seguro que free va a realizar su trabajo. Siempre y cuando el parámetro sea un apuntador valido.

Saludos

En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines