94,6 → 94,14 |
struct mavlnode *n; |
int rc, bal; |
|
if (*parent==NULL){ |
*parent = mavlnode_create(t, *data); |
*data = mavlnode_dataptr(*parent); |
if (*parent==NULL) |
return MAVL_E_NOMEM; |
return 0; |
} |
|
n = *parent; |
rc = t->cmp(*data, mavlnode_dataptr(n)); |
|
103,21 → 111,7 |
} |
|
if (rc < 0) { |
if (!n->left) { |
n->left = mavlnode_create(t, *data); |
*data = mavlnode_dataptr(n->left); |
if (!n->left) |
return MAVL_E_NOMEM; |
|
t->count++; |
if (n->right == 0) { |
n->bal = -1; |
return 1; |
} |
n->bal = 0; |
return 0; |
} |
|
/* n->left is not NULL */ |
bal = mavl_insert0(t, &n->left, data); |
|
144,7 → 138,6 |
n->left->bal = -1; |
break; |
case -1: |
break; |
n->bal = 1; |
n->left->bal = 0; |
break; |
161,19 → 154,6 |
} |
|
/* rc is > 0 here */ |
if (!n->right) { |
|
n->right = mavlnode_create(t, *data); |
*data = mavlnode_dataptr(n->right); |
|
if (!n->right) |
return MAVL_E_NOMEM; |
|
t->count++; |
n->bal = n->left ? 0 : 1; |
return n->bal; |
} |
|
bal = mavl_insert0(t, &n->right, data); |
|
if (bal > 1) |
205,7 → 185,6 |
default: |
n->bal = 0; |
n->right->bal = 0; |
|
} |
n->right->left->bal = 0; |
rot_rl(n, parent); |
221,17 → 200,6 |
const void *d; |
int rc; |
|
if (t->root == NULL) { |
t->root = mavlnode_create(t, data); |
|
if (t->root) |
t->count++; |
|
if (exists != NULL) |
*exists = 0; |
return mavlnode_dataptr(t->root); |
} |
|
d = data; |
rc = mavl_insert0(t, &t->root, &d); |
|