Witam,
Mam pytanie odnośnie powtarzających się danych w drzewie binarnym i ich liczenia. Otóż mam sobie taką funkcję:
struct tree * add_node(struct tree *p, int number) {
if (p == NULL) {
p = (struct tree *)malloc(sizeof(struct tree));
p->value = number;
p->left = p->right = NULL;
p->count = 1;
}
else if (number == p->value)
p->count++;
else if (number>p->value)
add_node(p->right, number);
else
add_node(p->left, number);
return p;
}
I przykładowo takiego maina:
struct tree *ptr = NULL;
ptr = add_node(ptr, 100);
ptr = add_node(ptr, 50);
ptr = add_node(ptr, 120);
ptr = add_node(ptr, 110);
ptr = add_node(ptr, 19);
ptr = add_node(ptr, 100);
print_tree(ptr);
I jak dokładnie program liczy powtarzające się liczby? W tym przypadku dla 100 zwróci liczbę 2, ale pierwsze i ostatnie wywołanie funkcji to już są 2 zupełnie różne wskaźniki. Czy to jest tak, że w pamięci są równolegle zapisane wszystkie te strktury i program jest w stanie to policzyć mimo że w funkcji w danej chwili jest już przetwarzana inna struktura?