数据结构实验之查找二:平衡二叉树
来源:互联网 发布:中国期刊 数据库 编辑:程序博客网 时间:2024/06/16 07:55
数据结构实验之查找二:平衡二叉树
Problem Description
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。
Input
输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。
Output
输出平衡二叉树的树根。
Example Input
588 70 61 96 120
Example Output
70
#include<bits/stdc++.h>using namespace std;typedef int element;struct Tree{ element data; int deep; Tree *lchild, *rchild;};int Max(int a, int b){ return a>b?a:b;}int Deep(Tree *T){ if(!T) return -1; else return T->deep;}Tree *LL(Tree *T){ //右旋 Tree *p = T->lchild; T->lchild = p->rchild; p->rchild = T; p->deep = Max(Deep(p->lchild), Deep(p->rchild))+1; T->deep = Max(Deep(T->lchild), Deep(T->rchild))+1; return p;}Tree *RR(Tree *T){ //左旋 Tree *p = T->rchild; T->rchild = p->lchild; p->lchild = T; p->deep = Max(Deep(p->lchild), Deep(p->rchild))+1; T->deep = Max(Deep(T->lchild), Deep(T->rchild))+1; return p;}Tree *LR(Tree *T){ //先左旋后右旋 T->lchild = RR(T->lchild); return LL(T);}Tree *RL(Tree *T){ //先右旋后左旋 T->rchild = LL(T->rchild); return RR(T);}Tree *Creat(Tree *T, int n){ if(!T){ T = new Tree; T->data = n; T->deep = 0; T->lchild = T->rchild = NULL; } else{ if(n<T->data){ T->lchild = Creat(T->lchild, n); if(Deep(T->lchild)-Deep(T->rchild)>1){ if(T->lchild->data > n) T = LL(T); else T = LR(T); } } else if(n>T->data){ T->rchild = Creat(T->rchild, n); if(Deep(T->rchild)-Deep(T->lchild)>1){ if(T->rchild->data<n) T = RR(T); else T = RL(T); } } } T->deep = Max(Deep(T->lchild), Deep(T->rchild)) + 1; return T;}int main(){ int n,m; Tree *T = NULL; cin>>n; for(int i = 0;i < n;i++){ cin>>m; T = Creat(T,m); } cout<<T->data<<endl; return 0;}
阅读全文
0 0
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树【OJ--3374】
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 3374 数据结构实验之查找二:平衡二叉树
- SDUT3374数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUTACM 数据结构实验之查找二:平衡二叉树
- AngularJS简介
- 《JAVA与模式》之责任链模式
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- python3 异常处理
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 一、Http 请求示例(Get)
- 数据结构实验之查找二:平衡二叉树
- 底部导航栏中间突出范例
- 在未来,你吃的肉不会来自活的有机体
- 面试感悟
- 使用Matlab完成层次聚类算法(最小生成树算法)
- html5的data-*数据绑定小例子
- 删除githhub本地仓库
- Java SE练习
- Oracle数据库常用命令