hi everyOne
i have this code for deleting node from binary search tree but becouse
I did not understand the last part Can anyOne explain it to me.
i have this code for deleting node from binary search tree but becouse
# define Ok 0
# define Error -1
# define Lchild 1
# define Rchild 2
int bt_delete ( struct bt_node * pred , struct bt_node *node , int stat )
{ struct bt_node *child;
if ( node == Null )
return ( Error );
if ( pred == Null )
{ root = node ─> rchild ;
child = node ─> lchild;
return ( bt_insert2 ( child ) );
}
if ( node ─> lchild == Null && node ─> rchild == Null )
child = Null;
elseif ( node ─> lchild == Null )
child = node ─> rchild ;
elseif ( node ─> rchild == Null )
child = node ─> lchild ;
elseif ( node ─> lchild ─> rchild == Null )
{ child = node ─> lchild ;
node ─> lchild ─> rchild = node ─> rchild; }
elseif ( node ─> rchild ─> lchild == Null )
{ child = node ─> rchild ;
node ─> rchild ─> lchild = node ─> lchild; }
//this part which i didnt understand
else
{child = node ─> rchild;
if ( stat = Lchild )
pred ─> lchild = node ─> rchild ;
else
pred ─> rchild = node ─> rchild ;
bt_freenode ( node );
return ( bt_insert2 ( node ─> lchild ) ) ; }
if ( stat == Lchild )
pred ─> lchild = child ;
else
pred ─> rchild = child ;
return ( Ok ); }