【发布时间】:2014-01-06 10:01:11
【问题描述】:
我得到了下面的代码来创建一个迭代器方法,以便在 C 中的二叉树上使用。也就是说,将一个函数应用于二叉树中的每个值。
int bst_char_iterate(bst_char *t, char (*fun)(char item))
“Bst_char *t”相当于指向树的指针,“*fun”相当于指向函数调用的指针,“item”是调用函数的值。
我认为迭代器真的应该作为 void 函数来完成,所以我不知道如何处理这个问题。
请帮忙!
编辑:我得到的指令如下:
向库中添加一个新方法,将函数应用于每个值 在树上。 (这是树的迭代器方法。)
int bst_char_iterate(bst_char *t, char (*fun)(char item))
注意:只有在 传递给它的函数是单调的。函数 f 是单调的
x
编辑 2:以下内容对我不起作用:
int bst_char_iterate(bst_char *t, char (*fun)(char item)) {
assert(t!=NULL);
struct node * p = t->root;
if (p!=NULL) {
p->item = fun(p->item);
p->left->item = bst_char_iterate(t,fun(p->left));
p->right->item = bst_char_iterate(t,fun(p->right));
} else {
return 0;
}
}
有不少错误。有人可以帮忙吗?
【问题讨论】:
-
我不理解你所说的“迭代器真的应该作为 void 函数来完成”的意思。看起来您应该只在每个节点上按顺序遍历 bst 和
node->item = fun(node->item)。 -
您是否获得过关于如何处理
*fun的返回值或您的函数最终应返回为int的任何指导?
标签: c function tree iterator binary-tree