Правильно ли реализовал функции 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;
}

Ответы (0 шт):