Я не уверен, смогу ли я нарушить упорядочение кучи трепа или его двоичное дерево поиска, подобное структуре с левым и / или правым методами вращения.
Это код для левого поворота
typename BinarySearchTree<K, T>::BSTTreeNode* rightSon = (*node).getRightSon();
if (rightSon != nullptr)
{
typename BinarySearchTree<K,T>::BSTTreeNode* leftGreatSon = (*rightSon).getLeftSon();
(*node).setRightSon(leftGreatSon);
(*rightSon).setLeftSon(node);
}
и правое вращение
typename BinarySearchTree<K,T>::BSTTreeNode* leftSon = (*node).getleftSon();
if (leftSon != nullptr)
{
typename BinarySearchTree<K,T>::BSTTreeNode* rightGreatSon = (*leftSon).getRightSon();
(*leftSon).setRightSon(node);
(*node).setLeftSon(parent);
}
Я бы ожидал, что эти вращения не нарушат упорядочение кучи и двоичное дерево поиска, подобное структуре трэпа.