数据结构实验之查找二:平衡二叉树
来源:互联网 发布:九九乘法表java代码 编辑:程序博客网 时间:2024/06/05 17:04
数据结构实验之查找二:平衡二叉树
Time Limit: 400MS Memory Limit: 65536KB
SubmitStatistic
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;struct node{ int data; int d; struct node *l, *r;};int max(int x, int y){ return x > y?x:y;}int deep(struct node *head){ if(head==NULL) { return -1; } else { return head->d; }}struct node *LL(struct node *head){ struct node *q; q = head -> l; head -> l = q -> r; q -> r = head; head -> d = max(deep(head->l), deep(head->r) )+1; q->d = max(deep(q->l), deep(q->r)) +1; return q;};struct node *RR(struct node *head){ struct node *q; q = head -> r; head -> r = q -> l; q -> l = head; head -> d = max(deep(head->l), deep(head->r) )+1; q->d = max(deep(q->l), deep(q->r)) +1; return q;};struct node *LR(struct node *root){ root -> l = RR(root->l); return LL(root);};struct node *RL(struct node *root){ root -> r = LL(root->r); return RR(root);};struct node *creat(struct node *root, int x){ if(root == NULL) { root = new node; root -> data = x; root->l = root->r = NULL; } else if(x < root->data) { root -> l = creat(root->l, x); if(deep(root->l) -deep(root->r) > 1) { if(x < root->l->data) { root = LL(root); } else { root = LR(root); } } } else { root ->r = creat(root->r, x); if(deep(root->r) - deep(root->l) > 1) { if(x > root->r->data) { root = RR(root); } else { root = RL(root); } } } root -> d = max(deep(root->l), deep(root->r)) +1; return root;};int main(){ int n; int x, i; cin >> n; struct node *root = NULL; for(i = 0; i < n; i++) { cin >> x; root = creat(root, x); } cout << root->data << endl; return 0;}
阅读全文
0 0
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树【OJ--3374】
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 3374 数据结构实验之查找二:平衡二叉树
- SDUT3374数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUTACM 数据结构实验之查找二:平衡二叉树
- P1133 装箱问题
- 支持向量机基本原理的直观理解
- 数据结构--栈
- STM32 KEIL里的MAP文件分析
- excel导入mySQL
- 数据结构实验之查找二:平衡二叉树
- 安卓统一推送联盟成立!不卡顿的安卓系统终于来了!
- J2EE技术常见的面试题
- 年会上的程序员们……
- 转载《你首先是一个人,然后你才是程序员》——左潇龙
- Start算法实现
- MySQL 索引管理与执行计划
- vs2015配置opencv:error:计算机无法找到msvcr120.dll,msvcp120.dll
- 数据结构实验之查找三:树的种类统计