Pagini recente » Cod sursa (job #2318860) | Cod sursa (job #2776718) | Cod sursa (job #2519211) | Cod sursa (job #1863855) | Cod sursa (job #978578)
Cod sursa(job #978578)
#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() );
for ( int i = 0; i < n; i++ )
adauga(bt,v[i]);
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 ) ;
}
}