题意:

给出一系列要插入平衡搜索二叉树的数,要求输出最后的根节点

思路:

没其他办法,完完全全是AVL树的插入节点模拟,这题就不会写,看别人代码写的。

#include<iostream>
#include<algorithm>
using namespace std;struct node {int key;struct node *left, *right;
};node *rotateLeft(node *root) {    //左单旋转node *t = root->right;        root->right = t->left;t->left = root;return t;
}
node *rotateRight(node *root) { //右单旋转node *t = root->left;root->left = t->right;t->right = root;return t;
}
int getHeight(node *root) {if (root == nullptr)return 0;return max(getHeight(root->left), getHeight(root->right)) + 1;
}
node *rotateLR(node *root) {    //LR平衡旋转root->left = rotateLeft(root->left);return rotateRight(root);
}
node *rotateRL(node *root) {    //RL平衡旋转root->right = rotateRight(root->right);return rotateLeft(root);
}
node *insert(node *root, int key) {if (root == nullptr) {root = new node();root->key = key;root->left = nullptr;root->right = nullptr;} else if (key < root->key) {root->left = insert(root->left, key);//递归插入并平衡if (getHeight(root->left) - getHeight(root->right) == 2) {if (key < root->left->key) {    //在根节点的左孩子的左子树上插入root = rotateRight(root);} else {         //在根节点的左孩子的右子树上插入root = rotateLR(root);        }}} else {root->right = insert(root->right, key);if (getHeight(root->right) - getHeight(root->left) == 2) {if (key > root->right->key) {    //在根节点的右孩子的右子树上插入root = rotateLeft(root);} else {          //在根节点的右孩子的左子树上插入root = rotateRL(root);}}}return root;
}int main() {int n, key;scanf("%d", &n);node *root = nullptr;for (int i = 0; i < n; i++) {scanf("%d", &key);root = insert(root, key);}printf("%d", root->key);return 0;
}

转载于:https://www.cnblogs.com/seasonal/p/10343620.html

PAT1066 Root of AVL Tree (25)(AVL树)相关推荐

  1. PAT甲级1066 Root of AVL Tree (25分):[C++题解]建立平衡树(AVL树)

    文章目录 题目分析 题目链接 题目分析 图片来源:acwing 分析 平衡树(AVL树)是平衡二叉搜索树的简称,当然需要满足二叉搜索树的性质,左子树小于根,根小于等于右子树:然后还要满足平衡树的基本特 ...

  2. pat04-树4. Root of AVL Tree (25)

    04-树4. Root of AVL Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue An A ...

  3. PAT 1066. Root of AVL Tree (25) 回レ!雪月AVL

    1066. Root of AVL Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue An A ...

  4. 1066 Root of AVL Tree (25 分)【难 / 知识点: 平衡树 未完成】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805404939173888 平衡树之前学过,不过有忘完了,有时间补吧

  5. PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)

    题意: 给出一系列数,要求组成AVL树,最后层序输出,并且判断是否为一个完全二叉树 要点: 这题就是一个AVL树的插入和判断完全二叉树,之前分别都有出现过,AVL树的建立需要记忆. #include& ...

  6. PTA甲级 1043 Is It a Binary Search Tree (25分) 树的遍历

    强烈推荐,刷PTA的朋友都认识一下柳神–PTA解法大佬 本文由参考于柳神博客写成 柳神的CSDN博客,这个可以搜索文章 柳神的个人博客,这个没有广告,但是不能搜索 还有就是非常非常有用的 算法笔记 全 ...

  7. 树的平衡 AVL Tree

    本篇随笔主要从以下三个方面介绍树的平衡: 1):BST不平衡问题 2):BST 旋转 3):AVL Tree 一:BST不平衡问题的解析 之前有提过普通BST的一些一些缺点,例如BST的高度是介于lg ...

  8. PAT甲级1123 Is It a Complete AVL Tree (30分):[C++题解]建立平衡树、bfs,判完全二叉树

    文章目录 题目分析 题目链接 题目分析 来源:pat网站 本题作为进阶题,它的基础知识点如下几题. PAT甲级1066 Root of AVL Tree (25分):[C++题解]建立平衡树(AVL树 ...

  9. [转]C#与数据结构--树论--平衡二叉树(AVL Tree)

    C#与数据结构--树论--平衡二叉树(AVL Tree) http://www.cnblogs.com/abatei/archive/2008/11/17/1335031.html 介绍 我们知道在二 ...

最新文章

  1. 【转】MongoDB C# / .NET Driver 中IMongoQuery的内部实现Query的用法
  2. 【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 )
  3. 直接在script里面换样式IE6,7,8不兼容
  4. 阿里云天池 Python训练营Task2: Python基础练习:数据结构大汇总 学习笔记
  5. 解决: Failed to execute ... maven-deploy-plugin... Return code is: 401, ReasonPhrase: Unauthorized.
  6. 考虑云计算来降成本:良药或毒药?
  7. Codeforces 719B Anatoly and Cockroaches(元素的交叉排列问题)
  8. [转载]手机编程与AIDE
  9. 携程酒店自动化360度质量保障体系
  10. 【IT168 新闻】用友U9 SOA管理软件业标杆吗?
  11. 麒麟KY-RTI分布仿真技术:第一章 简介
  12. 计算日期在当月是第几周-【自然周(每月第一个周一为该月第一周)做法以及1号为第一周做法】
  13. Word删除空白页的方法
  14. 身为程序员就算月薪再高,想找女朋友的话这些你千万别做!
  15. NEYC 1702 排座 问题模型
  16. android技术帖,android好帖子
  17. H5音乐播放器我的2.0
  18. 轮播图的做法(更换背景图片)
  19. 【JavaWeb】Request对象详解
  20. Android AOA协议Android端 流程总结

热门文章

  1. Redis分布式锁(Redlock官方文档的理解)
  2. 企鹅科技获蚂蚁金服亿元战略投资,利用智慧物联赋能商用洗衣设备
  3. VCSA中配置时间和时区,实测至6.5适用
  4. 什么是JAVA语言为什么要学习JAVA
  5. Java Programming Test Question 3
  6. 用泛型实现参数化类型
  7. 线程编程常见API简介(上)
  8. 对硬连接与软件连接的理解
  9. 汇编 CALL和RET指令
  10. 汇编语言 ADC指令和SBB指令