1066. Root of AVL Tree
来源:互联网 发布:河南科技学院网络教学 编辑:程序博客网 时间:2024/06/03 12:29
终于主动写了一次AVL树。。。果然还是有点晕
这是学习了别人的,照着改的
#include <iostream>#include <stdio.h>using namespace std;struct Node{ int value; int height; Node *left; Node *right; Node(int v, int h, Node *l, Node *r):value(v), height(h), left(l), right(r){}};typedef Node * Tree;int height(Node *node){ if(node == NULL) return -1; else return node->height;}void Lrotate(Tree &node){ Tree temp = node->left; node->left = temp->right; temp->right = node; temp->height = max(height(temp->left), height(temp->right))+1; node->height = max(height(node->right), height(node->left))+1; node = temp;}void Rrotate(Tree &node){ Tree temp = node->right; node->right = temp->left; temp->left = node; temp->height = max(height(temp->right), height(temp->left))+1; node->height = max(height(node->right), height(node->left))+1; node = temp;}void LRrotate(Tree &node){ Rrotate(node->left); Lrotate(node);}void RLrotate(Tree &node){ Lrotate(node->right); Rrotate(node);}void build(Tree &tree, int x){ if(tree == NULL) { tree = new Node(x, 0, NULL, NULL); return; } if(x < tree->value) { build(tree->left, x); if(height(tree->left) - height(tree->right) == 2) { if(x < tree->left->value) Lrotate(tree); else LRrotate(tree); } } else { build(tree->right, x); if(height(tree->right) - height(tree->left) == 2) { if(x > tree->right->value) Rrotate(tree); else RLrotate(tree); } } tree->height = max(height(tree->left), height(tree->right))+1;}int main(){ int n; int x; Tree tree = NULL; cin >> n; for(int i = 0; i < n; i++) { cin >> x; build(tree,x); } cout << tree->value << endl; return 0;}
0 0
- 1066. Root of AVL Tree
- 1066. Root of AVL Tree
- 1066.Root of AVL Tree
- 1066. Root of AVL Tree
- 1066. Root of AVL Tree
- 1066. Root of AVL Tree
- Root of AVL Tree
- Root of AVL Tree
- Root of AVL Tree
- 【PAT】1066. Root of AVL Tree (25)
- 【PAT】1066. Root of AVL Tree (25)
- 1066. Root of AVL Tree (25)
- PAT 1066. Root of AVL Tree
- PAT 1066. Root of AVL Tree
- 1066. Root of AVL Tree (25)
- 1066. Root of AVL Tree (25)
- 1066. Root of AVL Tree (25)
- 1066. Root of AVL Tree (25)
- 剑指offer题解 数字在排序数组中出现的次数
- iptables网页劫持重定向
- 第十六周上机实践——项目5-二进制文件浏览器
- 沟通的艺术——情绪:感觉、思考和沟通
- java WEB 配置文件的读取
- 1066. Root of AVL Tree
- 文档发布工具mkdocs
- 解决 Previous operation has not finished; run 'cleanup' if it was interrupted
- 互联网公司的RPC框架如何选择?
- Linux字符设备与块设备的区别与比较
- 经典算法体会之冒泡排序
- JDBC MySQL连接
- 原声js思维导图
- eigrp路由协议