整数を読み込んで昇順に出力するmain関数を定義する必要があります。AVLツリーから昇順(ソート)で印刷する
For example, if the input contains
12
4
19
6
the program should output
4
6
12
19
ただし、これを行うにはツリーを使用する必要があります。私は2つの機能insertavl
とdeleteavl
を私の処分で使用しました。それらの定義はそうです... http://ideone.com/8dwlU基本的にdeleteavlが呼び出されるとノードが削除され、それに応じてツリーのバランスが再調整されます ...興味があるのはhttp://ideone.com/QjlGeです。
私はこれまでのところ、これを得ている:
int main (void) {
int number;
struct node *t = NULL;
while (1 == scanf("%d",&number)) {
t = insertavl(t, number);
}
while (t != NULL){
printf("%d\n",t->data);
t = deleteavl(t, t->data);
}
}
しかし、これは昇順に印刷されません。どんな提案も役に立つでしょうか?前もって感謝します!
?私はツリーを昇順で整列するためにinorder関数を使うようにした後で、私はすべてする必要がありますか? – Thatdude1
@Beginnernato:添付されているwikipediaへのリンクを見てください。それは順序通りのトラバーサル関数の擬似コードを持っています。私の意見ではかなり簡単です。 [プログラムの他の部分にバグがない限り]それを実装して実行してください。 – amit
@ Beginnernato:BSTのこのプロパティの説明を追加しました。そう、はい、あなたがする必要があるのは、順番のトラバースで要素を印刷することです。 – amit