Non-parented code:
Node * RotateLeft(Node * n)
{
if (0 == n || 0 == n->rchild_) return n;
Node * p = n->rchild_;
n->rchild_ = p->lchild_;
p->lchild_ = n;
return p;
}
|
Parented Code:
Node * RotateLeft(Node * n)
{
if (0 == n || 0 == n->rchild_) return n;
Node* p = n->rchild_;
n->rchild_ = p->lchild_;
if (0 != p->lchild_)
{
p->lchild_->parent_ = n;
}
p->parent_ = n->parent_;
if (0 != n->parent_)
{
if (n == n->parent_->lchild_)
{
n->parent_->lchild_ = p;
}
else
{
n->parent_->rchild_ = p;
}
}
n->parent_ = p;
p->lchild_ = n;
return p;
}
|