【发布时间】:2020-01-15 13:00:04
【问题描述】:
我写了一段代码,递归地在树中找到最小的字符串并将其删除。但是,删除节点后打印树返回 (null)。
static char* findMinimum(TreeNodePtr treePtr){
if(treePtr->left == NULL){
printf("Minimum node is %s\n", treePtr->item);
char * temp = treePtr->item;
(treePtr)->item = NULL;
return(temp);
}
else{
findMinimum(treePtr->left);
}
}
我认为这个函数可以工作,因为即使使用不同的字符串,它也会删除最小值。我应该写一个条件来确保 NULL 指针不会被打印吗?以防万一,这里还有打印功能:
static void printTree(TreeNodePtr treePtr) {
if (treePtr != NULL) {
level++;
printTree(treePtr->left);
printf(">%*s%s\n", level*5, "", treePtr->item);
printTree(treePtr->right);
level--;
}
}
【问题讨论】:
-
假设其中一个父节点没有左子节点,您的代码(应该)删除父节点,那么如果存在右子节点怎么办?你怎么处理? PLUS 我猜
item必须是一个字符串,那么将它分配给NULL会做什么?
标签: c pointers recursion binary-search-tree