Mám za úlohu vložiť do stromu čísla, aby vyzeral takto:
5
/ \
3 10
/\ \
1 4 16
/ \
13 18
ono je to v podstate jedno, v akom poradí ich tam budem dávať, tak či tak sa mi dajú do tohoto tvaru
Problém je ale v tom, že keď mi príde na prvé porovnávanie, tak do tempu sa mi nedajú hodnoty z konštruktora Node a program logicky spadne, keďže to nemá sčím porovnať. Podľa mňa mám chybu dakde v inserte
Kód:
#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node* left,* right;
Node(int data = -1, Node* left = NULL, Node* right = NULL)
{
this->data = data;
this->left = left;
this->right = right;
}
};
class Btree
{
public:
Node* root;
Btree(Node* root = NULL)
{
this->root = root;
}
void insert(int value);
};
void Btree::insert(int value)
{
Node* temp = root;
while(1)
{
if(temp->data < value)
{
if(temp->left == NULL)
{
temp->left = new Node(value);
}
else
{
temp = temp->left;
}
}
else
{
if(temp->left == NULL)
{
temp->right = new Node(value);
}
else
{
temp = temp->right;
}
}
}
}
int main()
{
Btree a;
a.insert(1);
a.insert(3);
a.insert(5);
a.insert(4);
a.insert(10);
a.insert(18);
a.insert(13);
a.insert(16);
system("pause");
return 0;
}