Правильно ли реализовал функции skew и split в AA-tree
Вот сам код функций:
typedef struct aatree {
int key;
int level;
struct aatree* left;
struct aatree* right;
}aatree;
aatree* skew(aatree* node) {
if(node == NULL)
return NULL;
else if(node->left == NULL)
return node;
else if(node->level != node->left->level)
return node;
aatree *left = node->left;
node->left = left->right;
left->right = node;
node = left;
return node;
}
aatree* split(aatree *node) {
if (node == NULL)
return NULL;
else if(node->right == NULL || node->right->right == NULL)
return node;
else if(node->right->right->level != node->level)
return node;
aatree* right = node->right;
node->right = right->left;
node = right;
node->level++;
return node;
}