Subversion Repositories PlanixRsrch.SVN

Compare Revisions

Ignore whitespace Rev 324 → Rev 325

/trunk/libmavl/mavl_del.c
31,7 → 31,7
 
 
 
static int adj_bal_r(struct mavlnode *n, struct mavlnode **parent, int dir)
static int adj_bal(struct mavlnode *n, struct mavlnode **parent, int dir)
{
 
int sdir = dir ? 1:-1;
98,6 → 98,8
struct mavlnode *n = *parent;
int rc;
int bal;
int dir,sdir;
 
rc = t->cmp(data, mavlnode_dataptr(n));
 
if (rc == 0) {
119,7 → 121,7
return 1;
}
 
/* node has two childs */
/* node has two children */
 
if (t->del) {
t->del(mavlnode_dataptr(n));
133,12 → 135,25
if (n->bal != -2)
return bal;
 
/* return adj_bal_r(n, parent); */
return adj_bal(n, parent,1);
 
}
 
dir = rc < 0 ? 0 : 1;
sdir = dir ? -1:1;
bal = mavl_del0(t, &n->s[dir], data);
if (bal == 2)
return 2;
n->bal += bal*sdir;
if (n->bal == sdir)
return 0;
 
return 0;
if (n->bal != 2*sdir)
return bal;
 
return adj_bal(n, parent,1-dir);
 
 
}