Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "std_lib_facilities.h"
- struct elem {
- int adat;
- elem* bal;
- elem* jobb;
- elem() {
- adat = -1;
- jobb = 0;
- bal = 0;
- }
- elem(int a) {
- adat = a;
- jobb = 0;
- bal = 0;
- }
- };
- int agszam(elem* e, elem* gyoker){
- if (e == 0) {
- return 0;
- }
- if (e->jobb == 0 && e->bal == 0) {
- if (e != gyoker) return 1; else return 0;
- }
- int josz = agszam(e->jobb, gyoker);
- int bosz = agszam(e->bal, gyoker);
- return josz + bosz;
- }
- void aghossz(elem* e, elem* gyoker, int hossz, vector<int> &v) {
- if (e == 0) {
- return;
- }
- if (e->jobb == 0 && e->bal == 0) {
- if (e != gyoker) {
- v.push_back(hossz);
- } else {
- }
- }
- aghossz(e->jobb, gyoker, hossz + 1, v);
- aghossz(e->bal, gyoker, hossz + 1, v);
- }
- int elemszam(elem* e, elem* gyoker) {
- if (e == 0) {
- return 0;
- }
- if (e->jobb == 0 && e->bal == 0) {
- if (e != gyoker) return 1; else return 0;
- }
- int josz = elemszam(e->jobb, gyoker);
- int bosz = elemszam(e->bal, gyoker);
- if (e == gyoker) {
- return josz + bosz;
- }
- return josz + bosz + 1;
- }
- int elemertek(elem* e, elem* gyoker) {
- if (e == 0) {
- return 0;
- }
- if (e->jobb == 0 && e->bal == 0 && e->adat == 1) {
- return 1;
- }
- int josz = elemertek(e->jobb, gyoker);
- int bosz = elemertek(e->bal, gyoker);
- if (e == gyoker || e->adat == 0) {
- return josz + bosz;
- }
- return josz + bosz + 1;
- }
- void agak(elem* e, elem* gyoker, string ag, vector<string>& v) {
- if (e == 0) {
- return;
- }
- if (e->jobb == 0 && e->bal == 0) {
- if (e != gyoker) {
- v.push_back(ag);
- }
- }
- agak(e->bal, gyoker, ag + "0", v);
- agak(e->jobb, gyoker, ag + "1", v);
- }
- int main()
- {
- elem* gyoker = new elem();
- elem* akt = gyoker;
- string be;
- int a;
- // 0 vagy 1
- string input;
- while (cin >> be) {
- input += be;
- }
- for (int i = 0; i < input.length(); i++)
- {
- a = input[i] - '0';
- if (a == 0) {
- if (akt->bal != 0) {
- akt = akt->bal;
- }
- else {
- elem* uj = new elem(a);
- akt->bal = uj;
- akt = gyoker;
- }
- }
- if (a == 1) {
- if (akt->jobb != 0) {
- akt = akt->jobb;
- }
- else {
- elem* uj = new elem(a);
- akt->jobb = uj;
- akt = gyoker;
- }
- }
- }
- if(input.length()<=1000){
- cout << "input: " << endl;
- for (int i = 1; i <= input.length(); i++){
- cout << input[i-1];
- if (i % 60 == 0) {
- cout << endl;
- }
- }
- }
- int asz = agszam(gyoker, gyoker);
- cout << endl << "Agak szama: " << asz << endl;
- vector<int> hosszak;
- aghossz(gyoker, gyoker, 0, hosszak);
- int sum = 0;
- int maxhossz = 0;
- for (int i : hosszak) {
- sum += i;
- if (maxhossz < i) maxhossz = i;
- }
- double atlag = asz != 0 ? (double)sum / asz : 0;
- cout << "Agak atlagos hossza: " << atlag << endl;
- double sum2=0;
- for (int i : hosszak) {
- sum2 += ((i-atlag)*(i-atlag));
- }
- cout << "Tapasztalati szoras: " << sqrt(asz != 0 ? sum2 / asz :0) << endl;
- cout << "Korrigalt szoras: " << sqrt(asz != 0 ? sum2 / (asz-1) :0) << endl;
- int esz = elemszam(gyoker, gyoker);
- cout << "Elemszam: " << esz << endl;
- cout << "Magassag: " << maxhossz << endl;
- int ee = elemertek(gyoker, gyoker);
- cout << "Atlag: " << (esz != 0 ? (double)ee/esz : 0) << endl;
- vector<string> agakvector;
- agak(gyoker, gyoker, "", agakvector);
- if (asz <= 50) {
- cout << "A fa agai:" << endl;
- for (string s : agakvector) {
- cout << s << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement