struct tree{
struct node* root;
};
typedef struct tree* Tree;
struct node{
int key;
struct node* left;
struct node* right;
};
typedef struct node* node;
我的问题是我需要实现的功能需要一个Tree而不是Node作为参数。
int count_occurrences(Tree t, int k){}
如果第一个参数是Node类型,我知道如何实现这个函数,但由于它需要一个类型Tree,我无法弄清楚如何在递归调用中传递类型Tree参数。
编辑:还有另一个问题。我无法直接访问struct字段,因为它们是在另一个文件(学校项目)中声明的。我可以访问一些函数,比如获取树的根,节点的左或右子等
Tree newtree();
int treeempty(Tree t);
Node root(Tree t);
int readInfo(Node v);
void setInfo(Node v, int x);
Node leftChild(Node v);
Node rightChild(Node v);
答案 0 :(得分:2)
一种直接的方法是创建辅助函数:
int count_occurrences_helper(node d, int k) {
/* You already know how to implement this. */
}
int count_occurrences(Tree t, int k) {
return count_occurrences_helper(t->root, k);
}