Я играл с этим деревом двоичного поиска некоторое время, но я не могу вставить или изменить какие-либо свойства дерева.Двоичный поиск Вставка дерева не работает
Мое бинарное дерево определяется как:
struct tree{
Node * root;
int size;
};
struct node{
int value;
Node * left;
Node * right;
};
Поэтому мое бинарное дерево состоит из узлов. Теперь бит, который не работает:
void add(int value, Tree *t){
//1. if root is null create root
if(t->root == NULL){
t->root = nodeCreate(value);
t->size ++;
return;
}
Node * cursor = t->root;
while(cursor != NULL){
if(value == cursor->value){
printf("value already present in BST\n");
return;
}
if(value < cursor->value){
cursor = cursor->left;
}
if(value > cursor->value){
cursor = cursor->right;
}
}
//value not found in BST so create a new node.
cursor = nodeCreate(value);
t->size = t->size + 1;
}
Может кто-нибудь сказать мне, где я иду не так? Я ожидал, что звонки в add()
увеличат член размера, а также создадут новые узлы, но я не могу его получить.
Я все еще не могу увеличить свой размерный член –
@andrewPatterson, это предполагает, что вы передали * действительный * 'Tree' адрес в эту функцию. Если вы этого не сделали, вы находитесь в стране ** неопределенного поведения **. – WhozCraig
@andrewPatterson. Тогда вы являетесь входящим узлом дерева неверно или неверно. Вышеприведенный код верен. [** See It Live **] (http://ideone.com/n5gnGW) – WhozCraig