Pagini recente » Cod sursa (job #393806) | Cod sursa (job #2071387) | Cod sursa (job #1749149) | Cod sursa (job #1754856) | Cod sursa (job #1528814)
#include <cstdio>
using namespace std;
struct Tree {
int value, cnt;
Tree *leftSon, *rightSon;
Tree() {
value = 0;
cnt = 0;
leftSon = NULL;
rightSon = NULL;
}
};
void insertElement(Tree *node, int x) {
if(node->value == x) {
node->cnt++;
return;
}
else if(node->value == 0) {
node->value = x;
node->cnt = 1;
return;
}
else if(node->value > x) {
if(node->leftSon == NULL) {
node->leftSon = new Tree;
}
insertElement(node->leftSon, x);
}
else {
if(node->rightSon == NULL) {
node->rightSon = new Tree;
}
insertElement(node->rightSon, x);
}
}
bool searchElement(Tree *node, int x) {
if(node == NULL) {
return false;
}
if(node->value == x) {
return true;
}
else if(node->value > x) {
return searchElement(node->leftSon, x);
}
else {
return searchElement(node->rightSon, x);
}
}
void printTree(Tree *node) {
if(node == NULL) {
return;
}
printTree(node->leftSon);
for(int i = 0; i < node->cnt; ++i) {
printf("%d ", node->value);
}
printTree(node->rightSon);
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
Tree *root = new Tree;
int n;
scanf("%d", &n);
for(int i = 0; i < n; ++i) {
int x;
scanf("%d", &x);
insertElement(root, x);
}
printTree(root);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}