SDUT OJ 3374
来源:互联网 发布:淘宝图片实拍保护网址 编辑:程序博客网 时间:2024/06/07 03:42
数据结构实验之查找二:平衡二叉树
Time Limit: 400MS Memory Limit: 65536KB
Submit Statistic
Problem Description
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。
Input
输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。
Output
输出平衡二叉树的树根。
Example Input
588 70 61 96 120
Example Output
70
#include <stdio.h>#include <string.h>#include <algorithm>#include <stdlib.h>using namespace std;struct node{ int h; int data; node *lchild,*rchild;};int depth(node *root){ if(root==NULL) return 0; return root->h;}node * LL(node *p)//右转{ node *q; q=p->lchild; p->lchild=q->rchild; q->rchild=p; q->h=max(depth(q->lchild),depth(q->rchild))+1; p->h=max(depth(p->lchild),depth(p->rchild))+1; return q;}node * RR(node *p)//左转{ node *q; q=p->rchild; p->rchild=q->lchild; q->lchild=p; q->h=max(depth(q->lchild),depth(q->rchild))+1; p->h=max(depth(p->lchild),depth(p->rchild))+1; return q;}node * RL(node *p)//先右转后左转{ p->rchild= LL(p->rchild); return RR(p);}node * LR(node *p)//先左转后右转{ p->lchild= RR(p->lchild); return LL(p);}node * Insert(node * root,int k){ if(root==NULL) { root=(struct node *)malloc(sizeof(struct node)); root->data=k; root->lchild=root->rchild=NULL; root->h=1; } else { if(k<root->data) { root->lchild=Insert(root->lchild,k); if(depth(root->lchild)-depth(root->rchild)>1) { if(root->lchild->data>k) root= LL(root); else root=LR(root); } } else { root->rchild=Insert(root->rchild,k); if(depth(root->rchild)-depth(root->lchild)>1) { if(root->rchild->data<k) root= RR(root); else root=RL(root); } } } root->h=max(depth(root->lchild),depth(root->rchild))+1; return root;}node* creat(node *root,int n){ for(int i=0; i<n; i++) { int k; scanf("%d",&k); root=Insert(root,k); } return root;}int main(){ int n; scanf("%d",&n); node *root; root=NULL; root=creat(root,n); printf("%d\n",root->data);}
0 0
- SDUT OJ 3374
- SDUT OJ 2718
- SDUT OJ -2892 A
- SDUT OJ-2896
- SDUT OJ 2862 勾股定理
- SDUT OJ 走迷宫
- SDUT OJ 2399 Palindrome
- SDUT OJ 走楼梯
- SDUT oj 玲珑龟
- 二叉排序树 (sdut oj 2482)
- SDUT oj 二叉排序树
- 小鑫追女神 (sdut oj)
- 闰年 (sdut oj)
- 优越数 (sdut oj)
- 相似三角形 (sdut oj)
- 洗衣服 (sdut oj)
- 压岁钱 (sdut oj)
- 数列求和 (sdut oj)
- public static void main(String[] args)理解
- python常用编码 Unicode & UTF-8
- c++学习笔记fopen问题
- Node和vue安装配置
- 随机变量的非高斯度量方法之峰度法
- SDUT OJ 3374
- 提高SQL Server性能
- PAT B1002
- linux内核调试2
- kylin-1.5.4.1安装问题解决
- poj1741 点分治
- Adjacency List Dijkstra
- RecyclerView的基本使用
- 【Basic Code】浅谈线程锁及Queue队列