315 - Zesraj się a nie daj się :) !!!
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);
}
Ostatnio edytowany przez Pan Japa (2011-03-15 22:37:54)
Offline