gpt4 book ai didi

c - 删除二叉树中所有以相同字母开头的单词

转载 作者:行者123 更新时间:2023-11-30 14:52:24 26 4
gpt4 key购买 nike

我有一个函数,可以删除 avl 二叉树中以相同第一个字母开头的所有单词(字母由用户给出)。

node_t* delete_from_tree(node_t* root, char search, int *deleted)
{
int cmp;
node_t* new_node = NULL;
if (root == NULL)
return root;
else
{
cmp = root->data[0] - search;
if (cmp == 0)
{
*deleted += 1;
new_node = delete_node(root, root->data);
return delete_from_tree(root, search, deleted);
}
else if (cmp > 0)
{
new_node = delete_from_tree(root->left, search, deleted);
}
else
{
new_node = delete_from_tree(root->right, search, deleted);
}
}
return root;
}

它从树中删除单词,但我无法理解为什么当我调用树遍历时会打印不必要的字符。

void print_inorder(node_t* node)
{
if (node == NULL)
return;
print_in(node->left);
printf("%s ", node->data);
print_in(node->right);
}

示例:树中的单词:生命、值(value)、管理、优势、添加、儿子。

预期输出:生命、儿子、值(value)。

实际输出:{生命、儿子、值(value)。

最佳答案

注意:这不是一个明确的答案,但对于评论空间来说太长了。

您没有显示 new_node = delete_node(root, root->data); 对树结构的作用,但很可能它删除了 root< 指向的节点 变量。

如果是这样,root 指针在从 delete_node() 返回时变得无效,因此在 return 语句中进行递归调用

return delete_from_tree(root, search, deleted);

使被调用函数对非NULL进行操作,无论如何无效root指针。

关于c - 删除二叉树中所有以相同字母开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47640440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com