04-树5 Root of AVL Tree
来源:互联网 发布:国网内网网络大学地址 编辑:程序博客网 时间:2024/06/12 01:23
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illustrate the rotation rules.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (≤20) which is the total number of keys to be inserted. Then N distinct integer keys are given in the next line. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print the root of the resulting AVL tree in one line.
Sample Input 1:
588 70 61 96 120
Sample Output 1:
70
Sample Input 2:
788 70 61 96 120 90 65
Sample Output 2:
88
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<fstream>#include<stdlib.h>#include<stdio.h>#include<time.h>#include<iomanip>#include<stack>#include<queue>#include<string>#include<math.h>using namespace std;typedef struct AVLNode *AVLTree;typedef struct AVLNode {AVLTree left;AVLTree right;int data;int height;};AVLTree insert(AVLTree t, int x);AVLTree leftrot(AVLTree t);AVLTree rightrot(AVLTree t);AVLTree leftrightrot(AVLTree t);AVLTree rightleftrot(AVLTree t);int getHeight(AVLTree t) {if (!t) return 0;return t->height;}AVLTree leftrot(AVLTree t) {AVLTree b = t->left;t->left = b->right;b->right = t;t->height = max(getHeight(t->left), getHeight(t->right)) + 1;b->height = max(getHeight(b->left), getHeight(t)) + 1;return b;}AVLTree rightrot(AVLTree t) {AVLTree b = t->right;t->right = b->left;b->left = t;t->height = max(getHeight(t->left), getHeight(t->right)) + 1;b->height = max(getHeight(b->right), getHeight(t)) + 1;return b;}AVLTree leftrightrot(AVLTree t) {t->left = rightrot(t->left);return leftrot(t);}AVLTree rightleftrot(AVLTree t) {t->right = leftrot(t->right);return rightrot(t);}AVLTree insert(AVLTree t, int x) {if (!t) {t = (AVLTree)malloc(sizeof(struct AVLNode));t->data = x;t->height = 0;//如果插入点为空,那么插入,自然高度也就是0了t->left = NULL;t->right = NULL;}else {if (x < t->data) {t->left = insert(t->left,x);if (getHeight(t->left) == getHeight(t->right) + 2) {if (x < t->left->data) {t = leftrot(t);}else {t = leftrightrot(t);}}}else {t->right = insert(t->right,x);if (getHeight(t->right) == getHeight(t->left) + 2) {if (x > t->right->data) {t = rightrot(t);}elset = rightleftrot(t);}}}t->height = max(getHeight(t->left), getHeight(t->right)) + 1;return t;}int main() {//ifstream cin("input.txt");int n;cin >> n;AVLTree t;t = NULL;//第一次从空树开始插入while (n--) {int temp;cin >> temp;t = insert(t, temp);}cout << t->data;return 0;}
0 0
- 04-树5 Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树5- Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树5 Root of AVL Tree
- 04-树4. Root of AVL Tree
- 04-树3. Root of AVL Tree
- 04-树3. Root of AVL Tree
- 04-树5 Root of AVL Tree (25分)
- 04-树5 Root of AVL Tree (25分)
- 04-树5 Root of AVL Tree (25分)
- 04-树5 Root of AVL Tree (25分)
- 04-树5 Root of AVL Tree (25分)
- 04-树5 Root of AVL Tree
- 取本周累计
- 92 Examine the output of the query that you executed to list the objects in the recycle bin: SQL> SE
- 让并发和容错更容易:Akka示例教程
- CentOS学习10_CentOS系统安装过程和配置细节
- CUDA环境搭建
- 04-树5 Root of AVL Tree
- awk行内去重
- kvm
- Facial Landmark Detection
- Android Activity 详述
- 第八节 CC254x内部温度传感器温度采集
- linux定时任务的设置
- PHP导出Excel
- 第一章 语料库语言学基本知识