42 lines
1.0 KiB
C++
42 lines
1.0 KiB
C++
#include <functional>
|
|
#include <iostream>
|
|
#include <queue>
|
|
|
|
template <typename T, std::function<bool(T, T)>>
|
|
class Heap {
|
|
public:
|
|
class Node {
|
|
T value;
|
|
Node *father = nullptr, *left = nullptr, *right = nullptr;
|
|
};
|
|
|
|
Node* root = nullptr;
|
|
|
|
Node* push(T value) {
|
|
if (root == nullptr) { return root = new Node(value); }
|
|
Node* node = root;
|
|
while (node->right != nullptr) { node = node->right; }
|
|
if (node->left == nullptr) { return node->left = new Node({.value = value, .father = node}); }
|
|
return node->right = new Node({.value = value, .father = node});
|
|
}
|
|
|
|
void swap(Node* a, Node* b) {
|
|
if (a->left != nullptr) { a->left->father = b; }
|
|
if (a->right != nullptr) { a->right->father = b; }
|
|
if (b->left != nullptr) { b->left->father = a; }
|
|
if (b->right != nullptr) { b->right->father = a; }
|
|
std::swap(a, b);
|
|
}
|
|
|
|
void swim(Node* node) {}
|
|
};
|
|
|
|
|
|
int main() {
|
|
std::ios::sync_with_stdio(false);
|
|
std::cin.tie(nullptr);
|
|
|
|
|
|
return 0;
|
|
}
|