Witam.
Mam problem ze zrozumieniem co oznaczają posczególnie linie kodu. Kolega nie za bardzo umiał wyjaśnić.
BSTNode * BST::remove(BSTNode * x) //!!!!!
{
BSTNode * y = x->p, *z;
if ((x->left) && (x->right))
{
z = (rand() % 2) ? remove(pred(x)) : remove(succesor(x)); //przypisz do "z" wartości z wyrażenia remove(pred(x)) jesli wyrażennie (rand%2) jest prawdziwe w przeciwnym razie przypisz watość z wyrażenia remove (succ)
z->left = x->left; if (z->left) z->left->p = z;
z->right = x->right; if (z->right) z->right->p = z;
count++;
}
else z = (x->left) ? x->left : x->right;
if (z) z->p = y;
if (!y) root = z;
else if (y->left == x) y->left = z; else y->right = z;
count--;
return x;
}
chciałabym wiedzić co robią poszczególne linijki.