Pagini recente » Profil Robybrasov | Cod sursa (job #2652331) | Cod sursa (job #2900720) | Cod sursa (job #1483088) | Cod sursa (job #978580)
Cod sursa(job #978580)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct btreenode
{
btreenode *leftchild ;
int data;
short int nr;
btreenode *rightchild ;
} ;
void adauga ( btreenode *&, int ) ;
void inorder ( btreenode * ) ;
vector<int>v;
ofstream g("algsort.out");
int main( )
{
btreenode *bt = NULL;
ifstream f("algsort.in");
int n, a;
f >> n;
for ( int i = 0, a; i < n; i++ )
f >> a,
v.push_back( a );
random_shuffle ( v.begin(), v.end() );
f.close();
ofstream g("algsort.in");
g << n << " ";
for ( int i = 0; i < n; i++ )
g << v[i] << " ";
g.close();
ifstream hh("algsort.in");
f >> n;
for ( int i = 0, a; i < n; i++ )
f >> a,
adauga(bt,a);
inorder(bt);
}
void adauga ( btreenode *&sr, int num )
{
if ( sr == NULL )
{
sr = new btreenode;
sr->leftchild = NULL ;
sr->data = num ;
sr->nr = 1;
sr->rightchild = NULL ;
}
else
{
if ( num == sr->data )
sr->nr++;
else
if ( num < sr->data )
adauga ( sr->leftchild, num ) ;
else
adauga ( sr->rightchild, num ) ;
}
}
void inorder ( btreenode *sr )
{
if ( sr != NULL )
{
inorder ( sr -> leftchild ) ;
while( sr->nr > 0 )
{
g << sr -> data << " ";
sr->nr--;
}
inorder ( sr -> rightchild ) ;
}
}