struct tree{
struct node* root;
};
typedef struct tree* Tree;
struct node{
int key;
struct node* left;
struct node* right;
};
typedef struct node* node;
私が実装する必要がある機能は、ノードとしてではなくツリーとしてパラメータを必要とするということです。Cのバイナリツリーでの出現をカウントする
int count_occurrences(Tree t, int k){}
私は、最初のパラメータはNode型であった場合は、この機能を実装する方法を知っているが、それは私が再帰呼び出しで型ツリーパラメータを渡すために、どのようにそれを把握することはできません型ツリーを必要とするため。
編集:また別の問題があります。他のファイル(学校プロジェクト)で宣言されているので、構造体フィールドに直接アクセスすることはできません。私は一つの簡単な方法は、ヘルパー関数を作成することです
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);
あなたはフロントエンドを持つことができますツリーをとる関数と、ノードをとる再帰関数です。フロントエンドからのルートノードで再帰関数を呼び出します。 –
なぜ再帰呼び出しが必要ですか?あなたが終わりに達するまでルートから始まるツリーをループするだけです(おそらく 'right' beeing NULLで示されます)。また、何かがtypedefを持つポインタ型であるという事実を隠すことは、混乱を招く可能性があります。 – Unimportant