1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <vector>
using namespace std;
struct Tree
{
int data;
struct Tree* left, * right;
};
struct Tree* newtree(int key)
{
struct Tree* temp = new Tree;
temp->data = key;
temp->left = NULL;
temp->right = NULL;
return temp;
}
Tree* insert(Tree* tree, int key)
{
if (tree == NULL) return newtree(key);
if (key < tree->data)
tree->left = insert(tree->left, key);
else
tree->right = insert(tree->right, key);
return tree;
}
void store(Tree* root, int a[], int& i)
{
if (root != NULL)
{
store(root->left, a, i);
a[i++] = root->data;
store(root->right, a, i);
}
}
void TreeSort(vector<int>& a)
{
struct Tree* root = NULL;
root = insert(root, a[0]);
for (size_t i = 1; i < a.size(); i++)
insert(root, a[i]);
int i = 0;
store(root, a.data(), i);
}
|