在C中计算二叉树中的出现次数

时间:2017-01-01 18:48:17

标签: c struct tree binary-tree nodes

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);

1 个答案:

答案 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);
}