Witam, jest to pewnie dość proste pytanie ale trochę już nad tym siedziałem i nie mogę sobie na nie odpowiedzieć. Chcę sobie poćwiczyć różne operacje na drzewie binarnym i zacząłem od prostej funkcji liczącej ilość elementów w drzewie. Zrobiłem to tak:
struct tree{
int x;
tree *l;
tree *p;
};
int ile (tree *root)
{
int licz = 0;
if (root == NULL) return licz;
else
{
licz = 1;
if (root->l != NULL) licz = licz + wid(root->l);
if (root->p != NULL) licz = licz + wid(root->p);
}
return licz;
}
int main(int argc, char** argv) {
int w;
root = new tree;
root->x = 5;
root->l = new tree;
root->l->x = 3;
root->p = new tree;
root->p->x = 10;
root->l->l = new tree;
root->l->l->x = 20;
root->l->p = new tree;
root->l->p->x = 21;
root->p->l = new tree;
root->p->l->x = 1;
w = ile(root);
cout << "ile = " << w;
return 0;
}
W kompilacji żaden błąd nie wyskakuje. Po prostu program przestaje działać. Podejrzewam, że źle działa warunek z NULL i program próbuje działać w nieskończoność tylko nie wiem dlaczego. Czy ktoś może zna odpowiedź?