Hi, ich bins mal wieder.
Ich bin gerade dabei mir einen dynamischen binären baum zu programmieren, aber ihrgendwie habe ich jetzt schon seit 2 strunden einen Denkfehler.
Warum, bleiben "smaller" und "bigger" der variable root immer auf null, trotz dessen, dass ich 10 integer hinzugefügt habe ?
Ich hoffe, das ist jetzt nicht zuviel code, aber ich denke, dass es besser ist wenn ich den ganzen reinschreibe, da man hier ja alles sehen muss um den Fehler zu finden.
Die Klasse ContainerInteger ist noch nicht vollständig(Löschen usw.. fehlt)
Ich bin gerade dabei mir einen dynamischen binären baum zu programmieren, aber ihrgendwie habe ich jetzt schon seit 2 strunden einen Denkfehler.
Warum, bleiben "smaller" und "bigger" der variable root immer auf null, trotz dessen, dass ich 10 integer hinzugefügt habe ?
Code:
#include <iostream>
using namespace std;
class Node
{
public:
Node *smaller;
Node *bigger;
int value;
Node(int value);
~Node(void);
void PrintAll(void);
};
Node::Node(int value)
{
this->value = value;
smaller = 0;
bigger = 0;
}
Node::~Node(void)
{
if(smaller != 0)
{
delete smaller;
}
if(bigger != 0)
{
delete bigger;
}
}
void Node::PrintAll(void)
{
cout<<"Value: "<<value<<endl;
if(smaller != 0)
{
smaller->PrintAll();
}
if(bigger != 0)
{
bigger->PrintAll();
}
}
class ContainerInteger
{
public:
Node *root;
ContainerInteger();
~ContainerInteger();
bool Add(int value);
bool Del(int value);
bool SearchFor();
void PrintAll();
};
ContainerInteger::ContainerInteger()
{
root = 0;
}
ContainerInteger::~ContainerInteger()
{
if(root != 0)
{
delete root;
}
}
bool ContainerInteger::Add(int value)
{
if(root == 0)
{
root = new Node(value);
return true;
}
else
{
Node *help_node = root;
while(help_node != 0)
{
if(value < help_node->value)
{
help_node = help_node->smaller;
}
else
if(value > help_node->value)
{
help_node = help_node->bigger;
}
else
if(value == help_node->value)
{
return false;
}
}
help_node = new Node(value);
return true;
}
}
void ContainerInteger::PrintAll()
{
cout<<root->smaller<< endl;
cout<<root->bigger<< endl;
}
int main(void)
{
ContainerInteger a;
a.Add(20);
a.Add(10);
a.Add(14);
a.Add(15);
a.Add(16);
a.Add(3);
_getch();
return 0;
}
Ich hoffe, das ist jetzt nicht zuviel code, aber ich denke, dass es besser ist wenn ich den ganzen reinschreibe, da man hier ja alles sehen muss um den Fehler zu finden.
Die Klasse ContainerInteger ist noch nicht vollständig(Löschen usw.. fehlt)