数据结构实验之查找二:平衡二叉树
2015-12-22 22:03
459 查看
数据结构实验之查找二:平衡二叉树
Time Limit: 400MS Memory limit: 65536K
题目描述
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。输入
输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。输出
输出平衡二叉树的树根。示例输入
5 88 70 61 96 120
示例输出
70
提示
#include<bits/stdc++.h> using namespace std; struct node { int data,bf; node *L,*R; }; node *Creat() { node *p=new node; p->bf=0; p->L=NULL; p->R=NULL; return p; } int n; int Height(node *&p) { if(p==NULL) return -1; return p->bf; } node *LLrotate(node *p) { node *p1; p1=p->L; p->L=p1->R; p1->R=p; p->bf=max(Height(p->L),Height(p->R))+1; p1->bf=max(Height(p1->L),Height(p1->R))+1; return p1; } node *RRrotate(node *p) { node *p1; p1=p->R; p->R=p1->L; p1->L=p; p->bf=max(Height(p->L),Height(p->R))+1; p1->bf=max(Height(p1->L),Height(p1->R))+1; return p1; } node *LRrotate(node *p) { p->L=RRrotate(p->L); return LLrotate(p); } node *RLrotate(node *p) { p->R=LLrotate(p->R); return RRrotate(p); } void AVLinsert(node *&p,int elem) { if(p==NULL) { p=Creat(); p->data=elem; return ; } if(elem<p->data) { AVLinsert(p->L,elem); if(Height(p->L)-Height(p->R)==2) { if(elem<p->L->data) p=LLrotate(p); else p=LRrotate(p); } } if(elem>p->data) { AVLinsert(p->R,elem); if(Height(p->R)-Height(p->L)==2) { if(elem>p->R->data) p=RRrotate(p); else p=RLrotate(p); } } p->bf=max(Height(p->L),Height(p->R))+1; } void Build(node *&p) { p=NULL; for(int i=0;i<n;i++) { int t; scanf("%d",&t); AVLinsert(p,t); } } int main() { while(~scanf("%d",&n)) { node *root=Creat(); Build(root); printf("%d\n",root->data); } return 0; }
相关文章推荐
- 数据结构基础(C语言版)(朱仲涛翻译)代码学习 第一章002
- 【ShancoLove】带你看数据结构——第十五课:哈夫曼树
- 【ShancoLove】带你看数据结构——第十四课:通讯录
- JVM启动过程的重要数据结构
- poj 1308 Is It A Tree? 数据结构 并查集
- 1-1-绪论-第1章-《数据结构》课本源码-严蔚敏吴伟民版
- opencv 基本数据结构
- 2015年大二上-数据结构-树和二叉树-1-(3)用二叉树遍历思想解决问题
- 数据结构初步认识
- python--数据结构和算法
- 2015年大二上-数据结构-树和二叉树-1-(2)二叉树遍历的递归算法
- 数据结构制冒泡排序算法—PHP
- 图——Prim最小生成树算法(矩阵方式实现)
- 数据结构录 之 BST的高级应用。
- 2015年大二上-数据结构-树和二叉树-1-(1)二叉树算法库
- 数据结构录 之 单调队列&单调栈。
- 【数据结构】计数排序
- 《数据结构》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
- 【数据结构】希尔排序
- 【Linux 驱动】netfilter/iptables (二) Netfilter hook 数据结构