Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar08 / src / rotations.cpp
diff options
context:
space:
mode:
Commit981037e28374f8c4ab44e26bdeda62da59f21a21 (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-12-04 17:15:45 -0500
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-12-04 17:15:45 -0500
Files8e4caeb3663627ac318a839efa217216cc21f8b2 /Seminar08/src/rotations.cpp
Data-structures-and-algorithms-981037e28374f8c4ab44e26bdeda62da59f21a21.tar
Data-structures-and-algorithms-981037e28374f8c4ab44e26bdeda62da59f21a21.tar.gz
Data-structures-and-algorithms-981037e28374f8c4ab44e26bdeda62da59f21a21.zip
Parent36a5f76137ee642768e828ace30359c5e468aa10 (diff)
Add sem08
1 files changed, 47 insertions, 0 deletions
-rw-r--r--Seminar08/src/rotations.cpp47
diff --git a/Seminar08/src/rotations.cpp b/Seminar08/src/rotations.cpp
new file mode 100644
index 0000000..59c452a
--- /dev/null
+++ b/Seminar08/src/rotations.cpp
@@ -0,0 +1,47 @@
+#include <iostream>
+
+struct node
+{
+ int data;
+ node* left;
+ node* right;
+
+ node(int data_, node* left_ = nullptr, node* right_ = nullptr) :
+ data(data_),
+ left(left_),
+ right(right_) {}
+};
+
+node* leftRotate(node* root)
+{
+ if(root == nullptr || root->right == nullptr)
+ return nullptr;
+
+ node* originalRight = root->right;
+ root->right = originalRight->left;
+ originalRight->left = root;
+
+ return originalRight;
+}
+
+node* rightRotate(node* root)
+{
+ if(root == nullptr || root->left == nullptr)
+ return nullptr;
+
+ node* originalLeft = root->left;
+ root->left = originalLeft->right;
+ originalLeft->right = root;
+
+ return originalLeft;
+}
+
+int main()
+{
+ node* example = new node(2, new node(1), new node(3));
+ example = leftRotate(example);
+ example = rightRotate(example);
+
+ std::cout << example->data << " " << example->left->data << " " << example->right->data;
+
+}