Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct node// добавлена ячейка rev
- {
- uint8_t color = NULL;
- int value_node = NULL;
- int size = NULL;
- int sum = NULL;
- int average_color = NULL;
- int add = NULL;
- int add_color = NULL;
- bool rev = false;
- node* left = nullptr;
- node* right = nullptr;
- node(int new_value)
- {
- value_node = new_value;
- size = 1;
- }
- node(uint8_t new_color)
- {
- color = new_color;
- average_color = color;
- }
- };
- void reverse(node* A,int left_face, int right_face) // установка переворота
- {
- Pair left = split(A, left_face);
- Pair right = split(left.second, right_face);
- right.second->rev ^= true;
- left.second = merge(right.first, right.second);
- merge(left.first, left.second);
- }
- void push(node* A) { // проталкивание переворота
- if (A->rev) {
- swap(A->left, A->right);
- if (A->left)
- A->left->rev ^= 1;
- if (A->right)
- A->right->rev ^= 1;
- }
- A->rev = false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement