我编写了一个函数来取消 BST 的所有叶子。BST当然有一个左右指针和一个叫做data的char来存储节点的值。
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);
知道发生了什么吗?谢谢。