Я написал функцию для обнуления всех листьев BST. Конечно, BST имеет левый и правый указатель и символ, называемый данными, для хранения значения узла.
void removeLeaves(struct Tree* T){
if(T->left == NULL && T->right == NULL){
printf("removing %c\n", T->data);
T=NULL;
}
else{
if(T->left!=NULL){
removeLeaves(T->left);
}
if(T->right!=NULL){
removeLeaves(T->right);
}
}
}
Я распечатываю дерево до и после вызова этой функции. И хотя приведенный выше оператор печати работает и печатает обнуленные узлы, результирующее дерево остается тем же. У меня есть что-то вроде:
print(BST);
removeLeaves(BST);
print(BST);
Есть идеи, что происходит? Спасибо.