红黑树右旋代码C++
时间: 2023-11-07 19:47:52 浏览: 119
红黑树的右旋代码如下所示:
```
void RotateRight(node<T>*& root, node<T>* cur)
{
node<T>* subL = cur->left; // 将cur节点的左子节点保存为subL
cur->left = subL->right; // 将subL的右子节点变为cur的左子节点
if (subL->right != nil)
subL->right->parent = cur; // 更新cur的左子节点的父节点为cur
subL->parent = cur->parent; // 更新subL的父节点为cur的父节点
if (cur->parent == nil)
root = subL; // 如果cur是根节点,则将subL设为新的根节点
else if (cur == cur->parent->right)
cur->parent->right = subL; // 如果cur是其父节点的右子节点,则将subL设为cur父节点的右子节点
else
cur->parent->left = subL; // 如果cur是其父节点的左子节点,则将subL设为cur父节点的左子节点
subL->right = cur; // 将subL的右子节点设为cur
cur->parent = subL; // 将cur的父节点设为subL
}
```
这段代码实现了红黑树的右旋操作,它是用来保持红黑树的性质不变的一种操作。
阅读全文