BSTのすべての葉を無効にする関数を作成しました。もちろん、BSTには、左右のポインターと、ノードの値を格納するためのdataという文字があります。
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ステートメントは機能し、無効化されたノードを出力しますが、結果のツリーは同じです。私は次のようなものを持っています:
print(BST);
removeLeaves(BST);
print(BST);
何が起こっているのか分かりますか?ありがとう。