1123 Is It a Complete AVL Tree
1123 Is It a Complete AVL Tree(30 分)
Input Specification:
Output Specification:
Sample Input 1:
Sample Output 1:
Sample Input 2:
Sample Output 2:
#include <cstdio> #include <queue> #include <algorithm> using namespace std; struct Node{ int val; int height;//以该结点为根结点的子树高度 Node *lchild,*rchild; Node(),lchild(nullptr),rchild(nullptr){} }; int n;//结点个数 int getHeight(Node* pNode) { ; else return pNode->height; } int getBalancedFactor(Node* pNode) { return getHeight(pNode->lchild)-getHeight(pNode->rchild); } void updateHeight(Node* pNode) { pNode->height=max(getHeight(pNode->lchild),getHeight(pNode->rchild))+; } void leftRotation(Node* &pNode) { Node* temp=pNode->rchild; pNode->rchild=temp->lchild; temp->lchild=pNode; updateHeight(pNode); updateHeight(temp); pNode=temp; } void rightRotation(Node* &pNode) { Node* temp=pNode->lchild; pNode->lchild=temp->rchild; temp->rchild=pNode; updateHeight(pNode); updateHeight(temp); pNode=temp; } void insert(Node* &root,int val) { if(root==nullptr){ root=new Node(val); return; } if(val < root->val){ insert(root->lchild,val); updateHeight(root); ){ ){//LL型 rightRotation(root); }){//LR型 leftRotation(root->lchild); rightRotation(root); } } }else{ insert(root->rchild,val); updateHeight(root); ){ ){//RR型 leftRotation(root); }){//RL型 rightRotation(root->rchild); leftRotation(root); } } } } //层序遍历,并判断是否为完全二叉树 bool levelOrderTraversal(Node* root) { ; bool flag=true; queue<Node*> q; q.push(root); while(!q.empty()){ Node* temp=q.front(); q.pop(); if(temp){ printf("%d",temp->val); cnt++; if(cnt<n) printf(" "); q.push(temp->lchild); q.push(temp->rchild); }else{ if(cnt<n) flag=false; } } return flag; } int main() { int val; Node* root=nullptr; scanf("%d",&n); ;i<n;i++){ scanf("%d",&val); insert(root,val); } bool flag=levelOrderTraversal(root); printf("\n%s",flag?"YES":"NO"); ; }
1123 Is It a Complete AVL Tree的更多相关文章
- PAT甲级1123. Is It a Complete AVL Tree
PAT甲级1123. Is It a Complete AVL Tree 题意: 在AVL树中,任何节点的两个子树的高度最多有一个;如果在任何时候它们不同于一个,则重新平衡来恢复此属性.图1-4说明了 ...
- 1123. Is It a Complete AVL Tree (30)
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- 1123 Is It a Complete AVL Tree(30 分)
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- PAT甲级——1123 Is It a Complete AVL Tree (完全AVL树的判断)
嫌排版乱的话可以移步我的CSDN:https://blog.csdn.net/weixin_44385565/article/details/89390802 An AVL tree is a sel ...
- PAT 1123 Is It a Complete AVL Tree
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- PAT Advanced 1123 Is It a Complete AVL Tree (30) [AVL树]
题目 An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child ...
- PAT甲级1123 Is It a Complete AVL Tree【AVL树】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805351302414336 题意: 给定n个树,依次插入一棵AVL ...
- PAT甲级题解-1123. Is It a Complete AVL Tree (30)-AVL树+满二叉树
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6806292.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT 1123. Is It a Complete AVL Tree (30)
AVL树的插入,旋转. #include<map> #include<set> #include<ctime> #include<cmath> #inc ...
随机推荐
- WIFI 基础知识
转载自:wifi基本知识 如侵犯您的版权,请联系:2378264731@qq.com 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a IEEE 802.11g ...
- c# DataTable 导出csv文件
using System; using System.Data; using System.Configuration; using System.Collections.Generic; using ...
- 【SQL查询】正则表达式匹配字符串
1. 元字符说明 元字符 含义 ^ 匹配输入字符串的开始位置. $ 匹配输入字符串的结尾位置. * 匹配前面的字符零次或多次. + 匹配前面的字符一次或多次. ? 匹配前面的字符零次或一次. . 匹配 ...
- Content-type与json对象/字符串杂谈
这几天在对接项目另一个乙方的下行接口,因为最近一直用php开发,所以当那边接口文档上规定了接口传参类型的 时候,瞬间搞混了,但是这次的出错也让我对http的数据传输有了新的认知. 1.http的数据传 ...
- CentOS常用命令汇总
将新创建的数据分配某个用户访问 grant all privileges on zhouzdb.* to 'zhouz'@'%' identified by '1234'; flush privile ...
- postgresql与Oracle:空字符串与null
空字符串:两个单引号,中间无空格等任何内容 在postgresql中,空字符串与null是不同的:而oracle中,空字符串与null等同.测试如下: postgresql中: postgres=# ...
- Git详解之六 Git工具
以下内容转载自:http://www.open-open.com/lib/view/open1328070367499.html Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控 ...
- PXE_kickstart安装Ubuntu
1.准备 1.1.apt-get remove iptables卸载IP过滤表1.2.下载镜像 2.DHCP安装2.1.apt-get install dhcp3-server(在ubuntu12中, ...
- [译]贵宾犬咬伤了TLS
原文链接:https://community.qualys.com/blogs/securitylabs/2014/12/08/poodle-bites-tls 原文发表时间:2014.12.8 今天 ...
- C:源文件编译过程
可以大致概括为3个阶段: 源文件 → 汇编代码(文本) 汇编代码 → 机器语言(二进制) 各个目标文件的处理 详细过程: 预编译处理 Pre-processing(*.c/ *.cpp → *.i) ...