关于二叉树结点删除的一个小小疑问,来看看吧!

void remove(const Compare&x,BinarylNode*&t)
{
if(t==nullptr)return;
if(x<t->element)
remove(x,t->left);
else if(x>t->element)
remove(x,t->right);
else if(t->left!=nullptr&&t->right!=nullptr)//两个子结点
{
t->element=findMin(t->right)->element;
remove(t->element,t->right)
}
else
{
AvlNode*oldNode=t;
t=(t->left!=nullptr)?t->left:->t->right;//这一步是怎么实现的?
delete oldNode;
}
}

我以为要用parent结点指向删除结点的子结点,然后再delete删除结点,这里却是一步到位

我以为
要用parent结点指向删除结点子节点,再delete删除结点,但是这里一步属实惊艳,删除结点=子节点?