2分木
実行すると
「トップノードの値を入力してください。20
ノード[20:深さ0]の左の子の値を入れてください。15
ノード[20:深さ0]の右の子の値を入れてください。40
ノード[15:深さ1]の左の子の値を入れてください。11
ノード[15:深さ1]の右の子の値を入れてください。18
ノード[11:深さ2]の左の子の値を入れてください。/
ノード[18:深さ2]の左の子の値を入れてください。17
ノード[18:深さ2]の右の子の値を入れてください。/
・
が表示されて2分木のデータを作成するプログラムを作りたいのです。絵で表すと、
20
/ \
15 40
/ \ /\
11 18 30 55
/ /\ \
17 25 33 61
のようになります(なんか絵がずれて表示される)。
一応、自分で考えてみたのですが
#include<stdio.h>
#include<malloc.h>
struct data
{ int kazu;
struct data *left;
struct data *right;
};
main()
{
struct data *root,*p;
root=(struct data *)malloc(sizeof(struct data));
printf("トップノードの値を入れてください:");
scanf("%d",root->kazu);
root->left=root->right=NULL;
while(1){
p=(struct data *)malloc(sizeof(struct data));
printf("ノード%d,深さ%dの左の子の値を入れてください",root->kazu,
scanf("%d", );
printf("ノード%d,深さ%dの右の子の値を入れてください",root->kazu,
scanf("%d", );
if(
break;
なんか全然良くわからないのです。アルゴリズムの本を見て勉強していて、データ構造は理解できたのですが、2分木(グラフ)で詰まってしまいました。
小さい順に数を表示させるとか、そういうのじゃなくて、単にデータを格納するだけです。どうかよろしくお願いします。
補足
プログラムではどのように表現すればいいのかがよくわからないんですよね。 もう少し考えてみようと思います