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 ); }