#include<iostream>
using namespace std;
struct node {
int val;
struct node *left;
struct node *right;
};
node *singleLeftRotation(node *root) {
node *t = root->left;
root->left = t->right;
t->right = root;
return t;
}
node *singleRightRotation(node *root) {
node *t = root->right;
root->right = t->left;
t->left = root;
return t;
}
node *doubleLeftRightRotation(node *root) {
root->left = singleRightRotation(root->left);
return singleLeftRotation(root);
}
node *doubleRightLeftRotation(node *root) {
root->right = singleLeftRotation(root->right);
return singleRightRotation(root);
}
int getHeight(node *root) {
if (root == NULL)
return 0;
return max(getHeight(root->left), getHeight(root->right)) + 1;
}
node *insert(node *root, int val) {
if (root == NULL) {
root = new node();
root->val = val;
root->left = NULL;
root->right = NULL;
} else if (val < root->val) {
root->left = insert(root->left, val);
if (getHeight(root->left) - getHeight(root->right) == 2)
root = val < root->left->val ? singleLeftRotation(root) : doubleLeftRightRotation(root);
} else {
root->right = insert(root->right, val);
if (getHeight(root->left) - getHeight(root->right) == -2)
root = val > root->right->val ? singleRightRotation(root) : doubleRightLeftRotation(root);
}
return root;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】