Documente Academic
Documente Profesional
Documente Cultură
#include <algorithm>
struct Node {
int data;
Node* left;
Node* right;
int height;
Node(int value) {
data = value;
left = nullptr;
right = nullptr;
height = 1;
};
if (node == nullptr) {
return 0;
return node->height;
if (node == nullptr) {
return 0;
}
// Funcție pentru actualizarea înălțimii unui nod
if (node == nullptr) {
return;
newRoot->left = root;
root->right = subtree;
updateHeight(root);
updateHeight(newRoot);
return newRoot;
newRoot->right = root;
root->left = subtree;
updateHeight(root);
updateHeight(newRoot);
return newRoot;
if (root == nullptr) {
} else {
updateHeight(root);
// Cazul 1: Nodul este dezechilibrat spre stânga și subarborele stâng este mai înalt
return rotateRight(root);
// Cazul 2: Nodul este dezechilibrat spre dreapta și subarborele drept este mai înalt
return rotateLeft(root);
// Cazul 3: Nodul este dezechilibrat spre stânga și subarborele stâng este mai scurt
if (balanceFactor > 1 && value > root->left->data) {
root->left = rotateLeft(root->left);
return rotateRight(root);
// Cazul 4: Nodul este dezechilibrat spre dreapta și subarborele drept este mai scurt
root->right = rotateRight(root->right);
return rotateLeft(root);
return root;
if (root == nullptr) {
return;
inorderTraversal(root->left);
inorderTraversal(root->right);
if (root == nullptr) {
return;
preorderTraversal(root->right);
if (root == nullptr) {
return;
postorderTraversal(root->left);
postorderTraversal(root->right);
int main() {
int element;
inorderTraversal(root);
preorderTraversal(root);
postorderTraversal(root);
return 0;