Proponuje otworzyć wątek niebanalnych zadań ASD.
Macie jakieś rozwiązania? :)
Ja właśnie zabieram się za robotę. Spróbuję okiełznać ten zadany problem.
Życzę sobie powodzenia.
Natrafiłem w Googlach na taki przydatny kawałek kodu. Zabieram się za szlifowanie:)
#include <cstdlib> #include <iostream> #include <conio.h>
using namespace std;
struct drzewo { drzewo *lewy; drzewo *prawy; int wartosc; };
void tworzdrzewo(drzewo *&); void wpisz(int &); void pre_po(drzewo *&); void post_po(drzewo *&); void in_po(drzewo *&); bool pustedrzewo(drzewo *&);
int main(int argc, char *argv[]) { drzewo *wsk = NULL; tworzdrzewo(wsk);
cout << "
Pre_Order "; pre_po(wsk); cout << "
Post_Order "; post_po(wsk); cout << "
In_Order "; in_po(wsk);
getch(); system("PAUSE"); return EXIT_SUCCESS; }
void tworzdrzewo(drzewo *&t) { int x; char ch;
t = new drzewo;
cout << "
KORZEN DRZEWA
"; wpisz(x); t -> wartosc = x; t -> lewy = NULL; t -> prawy = NULL;
cout << " Adres: " << t << " "; getch();
cout << " Utworzyc lewe poddrzewo drzewa o korzeniu " << t -> wartosc << " T/N ?"; ch = getch(); if(ch == 'T' // ch == 't') tworzdrzewo(t -> lewy);
cout << " Utworzyc prawe poddrzewo drzewa o korzeniu " << t -> wartosc << " T/N ?"; ch = getch(); if(ch == 'T' // ch == 't') tworzdrzewo(t -> prawy);
}
void wpisz(int &data) { cout << "Podaj wartosc: "; cin >> data; }
void pre_po(drzewo *&t) { if(!pustedrzewo(t)) { cout << " Wartosc " << t -> wartosc << " pod adresem " << t << " "; cout << "wskazuje na "; cout << "lewy " << t -> lewy << " "; cout << "prawy " << t -> prawy << " "; pre_po(t -> lewy); pre_po(t -> prawy); }; } void post_po(drzewo *&t) { if(!pustedrzewo(t)) { post_po(t -> lewy); post_po(t -> prawy); cout << " Wartosc " << t -> wartosc << " pod adresem " << t << " "; cout << "wskazuje na "; cout << "lewy " << t -> lewy << " "; cout << "prawy " << t -> prawy << " "; }; } void in_po(drzewo *&t) { if(!pustedrzewo(t)) { in_po(t -> lewy); cout << " Wartosc " << t -> wartosc << " pod adresem " << t << " "; cout << "wskazuje na "; cout << "lewy " << t -> lewy << " "; cout << "prawy " << t -> prawy << " "; in_po(t -> prawy); }; }
bool pustedrzewo(drzewo *&t) { if(t == NULL) return(true); else return(false); }
|