Добавил:
f24
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Архив3 / kursach(7) / курсач / avltree
.c#include <stdio.h>
#include <stdlib.h>
struct tree_node{
int key;
double value;
struct tree_node *left;
struct tree_node *right;
};
struct sctree{
int size;
int max_size;
int del;
struct tree_node* head;
};
/*void avltree_free(struct avltree *tree)
{
if (tree == NULL)
return;
avltree_free(tree->left);
avltree_free(tree->right);
free(tree);
}*/
/*struct sctree *sctree_lookup(struct sctree *tree, int key)
{
while (tree != NULL) {
if (key == tree->key) {
return tree;
} else if (key < tree->key) {
tree = tree->left;
} else {
tree = tree->right;
}
}
return tree;
}*/
struct sctree *sctree_create()
{
struct sctree *node;
node = malloc(sizeof(*node));
if (node != NULL) {
node->del=0;
node->size=0;
node->max_size=0;
node->head=NULL;
}
return node;
}
/*
struct sctree *cstree_add(sctree *tree, int key, char *value)
{
struct sctree *node;
if (tree == NULL)
{
return sctree_create(key, value);
}
if (key < tree->key)
{
tree->left = avltree_add(tree->left,key, value);
}
else if (key > tree->key)
{
/* Insert into right subtree */
/* tree->right = avltree_add(tree->right,key, value);
}
tree->size++;
if(tree->size>tree->max_size)tree->max_size=tree->size;
return tree;
}
/*struct avltree *avltree_right_rotate(struct avltree *tree)
{
struct avltree *left;
left = tree->left;
tree->left = left->right;
left->right = tree;
tree->height = imax2(
avltree_height(tree->left),
avltree_height(tree->right)) + 1;
left->height = imax2(
avltree_height(left->left),
tree->height) + 1;
return left;
}
struct avltree *avltree_left_rotate(struct avltree *tree)
{
struct avltree *right;
right = tree->right;
tree->right = right->left;
right->left = tree;
tree->height = imax2(
avltree_height(tree->left),
avltree_height(tree->right)) + 1;
right->height = imax2(
avltree_height(right->right),
tree->height) + 1;
return right;
}
struct avltree *avltree_leftright_rotate(struct avltree *tree)
{
tree->left = avltree_left_rotate(tree->left);
return avltree_right_rotate(tree);
}
struct avltree *avltree_rightleft_rotate(struct avltree *tree)
{
tree->right = avltree_right_rotate(tree->right);
return avltree_left_rotate(tree);
}
*/
/*
void sctree_print(struct sctree *tree, int level)
{
int i;
if (tree == NULL)
return;
for (i = 0; i < level; i++)
printf("\t");
printf("%d %d\n", tree->key,tree->del);
avltree_print_dfs(tree->left, level + 1);
avltree_print_dfs(tree->right, level + 1);
}
*/
/*struct avltree * avltree_traverse(struct avltree *tree,struct avltree *new)
{
if(tree == NULL) return new;
new=avltree_traverse(tree->left,new);
if(tree->value&&tree->del==0) {printf("key= %d\n", tree->key);new = avltree_add(new, tree->key, tree->value);}
new=avltree_traverse(tree->right,new);
return new;
}*/
/*
struct avltree * avltree_delete(struct avltree *tree, int x)
{
struct avltree *t=tree;
struct avltree *new=NULL;
tree=avltree_lookup(tree, x);
tree->del=1;
d_vert++;
if(d_vert*2>a_vert){
d_vert=0;
a_vert=0;
tree=t;
new=avltree_traverse(tree,new);
return new;
}
return t;
}*/
int main()
{
struct sctree *a=NULL;
a=sctree_create();
return 0;
}