SDUT 3374 数据结构实验之查找二:平衡二叉树
数据结构实验之查找二:平衡二叉树
Problem Description
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。
Input
输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。
Output
输出平衡二叉树的树根。
Example Input
5
88 70 61 96 120
Example Output
70
DQE:
#include <iostream>
#include <cstdio>
using namespace std;
/*
全测数据
in
9
16 3 7 11 9 26 18 14 15
out
11 7 3 9 18 15 14 16 26
3 7 9 11 14 15 16 18 26
*/
struct BT
{
int d;
int x;
BT *lt,*rt;
}; int dp(BT *r)
{
return r?r->d:;
}
void rfd(BT *r)
{
int ld=dp(r->lt)+,rd=dp(r->rt)+;
r->d=ld>rd?ld:rd;
} void LL(BT *&r)
{
// printf("LL#%d#%d*%d ",r->x,dp(r->lt),dp(r->rt));
BT *a=r,*b=a->lt,*br=b->rt;
r=b; //利用引用修改上级指向
b->rt=a;
a->lt=br;
//深度重定
rfd(a);
}
void RR(BT *&r)
{
// printf("RR#%d#%d*%d ",r->x,dp(r->rt),dp(r->lt));
BT *a=r,*b=a->rt,*bl=b->lt;
r=b;
b->lt=a;
a->rt=bl; rfd(a);
}
void LR(BT *&r)
{
RR(r->lt);
rfd(r->lt);
LL(r);
}
void RL(BT *&r)
{
LL(r->rt);
rfd(r->rt);
RR(r);
} void insert(BT *&root,int e)
{
if(!root)
{
BT *r=new BT;
r->x=e;
r->d=;
r->lt=r->rt=NULL;
root=r;
}
else
{
if(e<root->x)
{
insert(root->lt,e);
if(dp(root->lt)-dp(root->rt)>)
{
if(e<root->lt->x)
LL(root);
else
LR(root);
}
}
else if(e>root->x)
{
insert(root->rt,e);
if(dp(root->rt)-dp(root->lt)>)
{
if(e>root->rt->x)
RR(root);
else
RL(root);
}
}
//更新根深度
rfd(root);
}
} void xout(BT *r)
{if(r){printf("%d ",r->x);xout(r->lt);xout(r->rt);}}
void mout(BT *r)
{if(r){mout(r->lt);printf("%d ",r->x);mout(r->rt);}}
int main()
{
BT *root=NULL;
int n,i;
scanf("%d",&n);
while(n--)
{
scanf("%d",&i);
insert(root,i);
}
/*
putchar('\n');
xout(root);
putchar('\n');
mout(root);
*/
printf("%d\n",root->x);
return ;
} /***************************************************
User name: ***
Result: Accepted
Take time: 0ms
Take Memory: 156KB
Submit time: 2016-11-29 19:09:25
****************************************************/
SDUT 3374 数据结构实验之查找二:平衡二叉树的更多相关文章
- SDUTOJ 3374 数据结构实验之查找二:平衡二叉树
题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3374.html 题目大意 略. 分析 ...
- SDUT 3376 数据结构实验之查找四:二分查找
数据结构实验之查找四:二分查找 Time Limit: 20MS Memory Limit: 65536KB Submit Statistic Problem Description 在一个给定的无重 ...
- SDUT OJ 数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之串二:字符串匹配
数据结构实验之串二:字符串匹配 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ 数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ 数据结构实验之链表二:逆序建立链表
数据结构实验之链表二:逆序建立链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT 3399 数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和快 ...
- SDUT 3379 数据结构实验之查找七:线性之哈希表
数据结构实验之查找七:线性之哈希表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 根据给定 ...
- SDUT 3377 数据结构实验之查找五:平方之哈希表
数据结构实验之查找五:平方之哈希表 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 给定的一组 ...
随机推荐
- MyISAM引擎的特点及优化方法
1.什么是MyISAM引擎?MyISAM引擎是MySQL关系数据库管理系统的默认存储引擎(MySQL5.5.5以前),这种MySQL的表存储结构从旧的ISAM代码扩展出许多有用的功能.在存储的时候,每 ...
- checking for event2/thread.h... no libevent_pthreads required, failing
/********************************************************************************** * checking for e ...
- pdp 的连接方法
<?php $dsn = "mysql:host=127.0.0.1;dbname=blog_edu"; try{ $pdo = new PDO($dsn,'root','' ...
- unity 联机调试(android ios)
http://blog.csdn.net/OnafioO/article/details/44903491 (这种没用,只是在手机看到画面而已) 手机安装unityRemote并运行,unity中设置 ...
- 浅谈K-D Tree
初步认识\(K-D\) \(Tree\) \(K-D\) \(Tree\)是一种基于空间分割的二叉树形数据结构,一般用于高维信息检索.因为\(OI\)中很多问题都能转化为高维信息检索,所以\(K-D\ ...
- springCloud组件启动时,提示内部tomcat无法加载
忘记拷贝当时的异常信息了. 本地启动模块,做测试 大概就是emmble tomcat就是表示内部tomcat无法启动. 出现这样的异常是由于配置中心得代码已经修改,但是没有从git上down下来,然后 ...
- iOS系统架构和Object-C基本数据类型(1)
iOS系统架构 基本数据类型 思维导图 下载 注:打开思维导图的软件:Mindjet MindManager 9
- [python] itertools库学习
最近做 cyber-dojo上的题,好几道都要用到排列组合.一开始我还老老实实自己写算法.后来一想,不对呀!python有那么多的库,为啥不用呢? 于是搜了下,发现这个:itertools 使用 he ...
- 侯捷STL学习(二)--序列容器测试
第六节:容器之分类和各种测试(四) stack不提供iterator操作,破坏了容器的独特性,先进先出. 使用容器multiset(允许元素重复) 内部是红黑树,insert操作就保证了排好了序. 标 ...
- 新版本Ubuntu本地提权漏洞复现
该漏洞在老版本中被修复了,但新的版本还存在漏洞 影响范围:Linux Kernel Version 4.14-4.4,Ubuntu/Debian发行版本 Exp下载地址:http://cyseclab ...