1066 Root of AVL Tree 需再做
1. 这题如果不知道平衡二叉树怎么平衡的(左旋右旋那一套)应该不可能做出吧,那就输出中位数回点血了。
2. 需要具备的基础知识:怎么将结点插入平衡二叉树。
3. 我犯的一个错误:把更新高度的函数直接返回了高度,而不没有修改高度。
AC代码
#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<cmath>
typedef long long LL;using namespace std;const int maxn = 30;struct Node{int data,hei;Node *lchild,*rchild;
};Node* newNode(int v){Node* root = new Node;root->data = v;root->hei = 1;root->lchild=root->rchild=NULL;return root;
}int getHei(Node* root){if(root==NULL)return 0;else return root->hei;
}void updateHei(Node* root){root->hei = max(getHei(root->lchild),getHei(root->rchild))+1;
}int getBF(Node* root){return getHei(root->lchild)-getHei(root->rchild);
}void R(Node* &root){Node* temp = root->lchild;root->lchild = temp->rchild;temp->rchild = root;updateHei(root);updateHei(temp);root = temp;
}void L(Node* &root){Node* temp = root->rchild;root->rchild = temp->lchild;temp->lchild = root;updateHei(root);updateHei(temp);root = temp;
}void insert(Node* &root,int v){if(root==NULL){root = newNode(v);return;}if(v<root->data){//插入左子树insert(root->lchild,v);updateHei(root);if(getBF(root)==2){//正向失衡 if(getBF(root->lchild)==1){//LLR(root);}else{//LRL(root->lchild);R(root);}} }else{insert(root->rchild,v);updateHei(root);if(getBF(root)==-2){//反向失衡 if(getBF(root->rchild)==-1){//RRL(root);}else{//RLR(root->rchild);L(root);} }}
}Node* createTree(int data[30],int n){Node* root = NULL;for(int i=0;i<n;i++)insert(root,data[i]);return root;
}int main(){int data[maxn],n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&data[i]);Node* root = createTree(data,n);printf("%d",root->data);return 0;
}
相关文章:

easyui-menu 解决disableItem不能禁用绑定事件的方法
版本:1.4. menu的disableItem方法不能禁用使用onClick方式绑定的事件。 解决思路如下: 重写disableItem方法和enableItem方法。 /*** menu方法扩展* param {Object} jq* param {Object} itemEl*/ $.extend($.fn.menu.methods, {/*** 激活选项࿰…

hadoop无法访问50070端口怎么办?
转载请注明出处:www.oldboyedu.com Hadoop 50070是hdfs的web管理页面,在搭建Hadoop集群环境时,有些大数据开发技术人员会遇到Hadoop 50070端口打不开的情况,引起该问题的原因很多,想要解决这个问题需要从以下方面进行排…

表情的机器自动识别(有图有真相)
这幅图片是我自己用C#编写的表情的机器自动识别。主要是AdaBoost的实现,训练做了几个不同版本:线性、并行和分布式,训练数据集采用的JAFFE。 有朋友问这东西有什么用处,其实主要是为了玩而已了。这是基于Paul Ekman那本著名的《情…

并查集专题练习:好朋友(未完待续)
有空再把题目补上 输入样例1 4 2 1 4 2 3 样例输出1 2 输入样例2 7 5 1 2 2 3 3 1 1 4 5 6 输出样例2 3 解题思路: 1. 这题放在并查集的专题后面,有查找也有合并,需要具备的基础只是是合并和查找的函数要会写(都很简单)。但是读到每…

android Viewpager取消预加载及Fragment方法的学习
1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载。通过设置setOffscreenPageLimit(int number) 来设置预加载的熟练,在V4包中,默认的预加载是1,即使你设置为…

前端Js框架 UI框架汇总 特性 适用范围 选择
身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做…

Emptyproject分析
Emptyproject分析(SimpleSample)1,InitApp()WinMain中有一个InitApp(),在sample中存在,但是在emptyproject中没有,该函数是用于设定已经声明的一些一般变量的初始值的。比如某些按钮。2,IsDeviceAcceptable()被WinMain…

1107 Social Clusters
这道题目给出的示例如上图所示,一共有1-8这8个人(圆形),他们拥有1-10这10个兴趣爱好(方形),一人可以有多个爱好,拥有共同爱好的人被视为一个社区的。现在给出每个人的爱好情况,求出社区的个数,并按照从大到…

c#直接调用ssis包实现Sql Server的数据导入功能
调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能。思前想后,决定还是贴一下增强记忆,高手请54.1、直接调用ssis包,需要引用Microsof…

从入门到放弃的javaScrip——队列
队列数据结构 队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 现实中,很常见的例子就是…

css控制不换行
white-space:nowrap; 转载于:https://www.cnblogs.com/w8104254/p/4178198.html

(C++)堆排序的3个关键函数
堆排序:指使用堆结构对一个序列进行排序。所以,首先要有一个堆结构。 此处讨论递增排序。以及用最大堆。 注意:让存放堆的数组作为全局变量,n为元素个数,数组存放元素从下标1开始,n结束。 int heap[11] …

android 横竖屏限制如何配置
在开发android的应用中,有时候需要限制横竖屏切换。只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制。 ndroid:screenOrientation"landscape"是限制此页面横屏显示, ndroid:screenOrientation"portrait"是…

Java面试题总结-Day4
<?xml version"1.0" encoding"utf-8"?> Java面试题总结-Day4Java面试题总结-Day4 Table of Contents 1. ArrayList和LinkedList区别 1.1. 是否线程安全1.2. 底层数据结构1.3. 插入和删除是否受元素位置的影响1.4. 是否支持快速随机访问1.5. 内存空…

Linux 使用者身份與群組記錄的檔案
在我們Linux系統當中,預設的情況下,所有的系統上的帳號與一般身份使用者,還有那個root的相關資訊, 都是記錄在/etc/passwd這個檔案內的。至於個人的密碼則是記錄在/etc/shadow這個檔案下。 此外,Linux所有的群組名稱都…

1098 Insertion or Heap Sort 需再做
1. 应该还做过一道类似的题目,也是要求判断属于哪种排序的中间过程,并要求写出下一轮排序结果,这次的进步是上来就知道用向量存数据,这样方便直接比较,而且下标0不能存元素,因为堆排序的堆是一个完全二叉树…

基于node.js的压缩合并安装
1.构建工具(grunt,gulp) 下载地址:http://gruntjs.cn/http://gruntjs.com/(1)安装nodejs(http://www.nodejs.org/) 验证是否安装成功,命令行输入 node -v (2)grunt 的安装 安装全局…

jenkins 修改工作目录
修改Jenkins路径 Jenkins的默认安装路径是/var/lib/jenkins 现在由于这个根目录的磁盘太小,所以切换到/data 目录下。 Jenkins目录、端口、工作目录等信息在/etc/sysconfig/jenkins 下,所以需要修改这个文件。 将JENKINS_HOME"/var/lib/jenkins&quo…

破一个行业ERP的感想
今天闲来无事,找来破一破。 这个是一个行业性质的ERP软件,有授权码验证,客户机数量限定,以及使用时间限定,被一一破解。 授权码存在明显的绕过bug.客户机数量同样被明文标注在文件中。使用时间也是标注在文件中&#x…

1034 Head of a Gang(图的DFS解法) 擦边大法好
1.题目的大意是给出很多人(结点)之间的通话记录,每两人之间的权重取决于他俩通话权重的总时长,如果一个社区的人数超过2且社区内发生的通话总时长超过给定阈值,那么这属于一个社区。最后要求输出社区的总数,再按照社区头目的姓名字…

Android定位方式和测试方法
Android常用的三种定位方式有:基于GPS定位、基于基站地位、基于wifi定位。 1、基于GPS定位: GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的。 GPS定位最大的优点就是其定位精确度高(一般误差在10m内),无网络也能用;缺点就是耗电高、定…

vue el-form鼠标事件导致页面刷新解决方案;vue 阻止多次点击提交数据通用方法...
一.阻止表单自动提交刷新页面:<el-form><el-form-item :inline"true" submit.native.prevent><el-input keyup.enter.nativesubmit></el-input></el-form-item> </el-form>注意: 鼠标事件导致页面刷新问…

[转]wxODBC(wxWidgets)中使用驱动程序方式打开数据库
wxODBC(wxWidgets)中使用驱动程序方式打开数据库 wxWidgets的文档中都是使用在控制面板/数据源中设定DSN来创建ODBC连接。但是实际上很多小型的应用,只是使用本机的一个Access数据库。而要求使用者学习ODBC的DSN配置明显的增加了软件的使用难度。因此,研…

1076 Forwards on Weibo
1. 这题说的是,微博上人们之间有关注和被关注的关系,如果一个人发博,他的追随者就可能转发,追随者的追随者又可能转发,以此类推。现在给定一个人,求其微博可能被转发的人数,但是注意有一个关注链…

2014年个人工作总结
2014年的日常工作,从技术支持岗位调到市场.社区岗位上:日常技术处理工作变为博客、微信、微博、市场活动策划、发送奖品等。如果以此为界:即毕业10年内的主要是软件研发、团队管理、项目管理;第二个十年开始,有幸从事市…

DAL(数据库访问层)
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Data.SqlClient;using System.Configuration; /// <summary>///DBHelper 的摘要说明/// </summary>public static class DBHelper{ public …

Navicat for Oracle
1、先解压Navicat for Oracle到任意目录 2、将instantclient-basic-nt-12.1.0.2.0解压到1中目录的instantclient_10_2文件夹下(推荐,可随意) 3、将instantclient-sqlplus-nt-12.1.0.2.0解压到instantclient_10_2文件夹中的 instantclient_12_…

1013 Battle Over Cities(图的DFS解法)
这题的背景是战争年代,假如城市1被占领,那么所有和城市1相关的公路都要被炸毁,但是这样一来,2和3就不连通了,所以需要补修一条23之间的公路。但是换做城市2或3被占领,1和另一座城市是联通的,并不…

你必须了解的微服务架构设计的10个要点!
近来,几乎人人都在谈论微服务。微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境等。本文将介绍微服务架构设计中的一些要点。 微服务架构设计时有哪些要点呢?先看下图是 Spring Cloud…

企业信息化中常见决策点应对
我和一位朋友在聊天的时候,谈起在甲方的做信息化,和在乙方做信息化的不同点在于,在甲方做信息化,需要搞定为什么要上一个项目。而乙方参与进来的时候,项目其实已经启动了。 是的,作为甲方的我们,…