アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の自己参照型を使用しプログラムを作ろうとしていますが、
2分探索木についての解説、サンプルをのせているサイトは
たくさんあり勉強になったのですが、
木が2以上の複数の場合になった場合、どういったプログラムをくめば
いいのかわからず、学習したいと思っています。

参考となる、サイト、サンプルを教えていただけないでしょうか?

//2分木の場合
struct node{
int nodeID;
struct node *nextA;
struct node *nextB;
}

//複数木の場合?
struct node{
int nodeID;
struct node **next;
}

のように複数木の場合は、次の木が複数に対応できるように
ポインタのポインタを使用するのかと思いますが、
構造体のメンバでポインタのポインタの使用の仕方が
いまいち理解できませんでした。

よろしくお願い致します。

A 回答 (3件)

「複数木の場合」のように分岐先をnextで持ってもいいのですが,考え方を変えて多分木を2分木で表現することもでき,この方法だとセルの数は多くなりますがリスト操作やデータの取り扱いがシンプルになることが多いです。



Lispという言語をご存知ですか?これは基本的なデータ構造がリストなのですが,見かけ上多分木であっても全て2分木としてデータに格納されます。データの参照・加工はcar, cdr, cons, eq, atom という少数の関数ででき,これを基にして必要な関数を定義します。
    • good
    • 0

http://oshiete.goo.ne.jp/qa/7895757.html
以前に同じような質問されて解決になってるんですけど理解できてませんでしたか?
    • good
    • 0

next = (struct node **) malloc(sizeof(struct node *) * 分岐数);


for (i = 0; i < 分岐数; i++) {
next[i] = (struct node *) malloc(sizeof(struct node));
}

malloc()で領域確保ができなった場合の処理は、適切に付け加えてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!