I wrote:
> class Bintre {
> private:
> int tall;
> Bintre* left;
> Bintre* right;
> };
>
Danny wrote:
> It would be helpful if you explained if the pointers formed an array or maybe a b-tree because of the naming. Is it something else?
>
> If it were just an array of Bintre then...
>
> delete [] right;
> delete [] left;
>
> If it were a b-tree, you would have to traverse to the bottom leaves and delete the on your way up until there was none left (could be done recursively as shown below).
>
> void Bintre::deleteNode(Bintre *ptr)
> {
> if (ptr-getLeft())
> deleteNode(ptr-getLeft());
> if (ptr-getRight())
> deleteNode(ptr-getRight());
> deleteNode(ptr);
> }
>
It's a b-tree (not an array)
I think the above example will work. Thanks.
I wrote:
> Every time I try to write some kind of destructor to "clean up", my program always crash upon exit or display the
> "null pointer assignment" upon exit..
>
Danny:
> Was the pointer null when you tried to delete it?
>
Yes. When I use a pointer of some kind, I always try:
ptr = NULL;
delete ptr;
and then on program exit I get "Null pointer assignment"
if I leave out "ptr = NULL;"
the program crash.
|