Cod sursa(job #2751704)

Utilizator StefaniaCriStefania Cristea StefaniaCri Data 15 mai 2021 16:47:57
Problema Planeta Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream f("planeta.in");
ofstream g("planeta.out");

class arbore{
public:
    int val;
    arbore* stanga;
    arbore* dreapta;
    arbore(int x)
    {
        this->val=x;
        stanga=NULL;
        dreapta=NULL;
    }
};
void preordine(arbore* radacina)
{
    if(!radacina) return;
    g<<radacina->val<<" ";
    preordine(radacina->stanga);
    preordine(radacina->dreapta);
}
int k;
vector <arbore*> construimBST(int start,int stop)
{
    vector<arbore*> arr;
    if(start>stop){
        arr.push_back(NULL);
        return arr;
    }
    for(int i=start;i<=stop;i++)
    {
        vector<arbore*> subarborestang=construimBST(start,i-1);
        vector<arbore*> subarboredrept=construimBST(i+1,stop);
        for(auto it:subarborestang){
            for(auto ij:subarboredrept){
                arbore* rad=new arbore(i);
                rad->stanga=it;
                rad->dreapta=ij;
                arr.push_back(rad);
                if(arr.size()==k) return arr;
            }
        }
    }
    return arr;
}

vector<arbore*> generateBSR(int n)
{
    vector<arbore*> vv;
    if (n == 0)
        return vv;

    vector<arbore*> res = construimBST(1, n);

    return res;
}

int main()
{
    int n;
    f>>n>>k;
    vector<arbore*> arr=generateBSR(n);
    preordine(arr[k-1]);
    return 0;
}