Pagini recente » Cod sursa (job #135149) | Cod sursa (job #3168852) | Cod sursa (job #586096) | Cod sursa (job #670202) | Cod sursa (job #2751704)
#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;
}