3374 数据结构实验之查找二:平衡二叉树
2017-12-20 21:52
543 查看
3374 数据结构实验之查找二:平衡二叉树
Time Limit: 400MS Memory Limit: 65536KB
Time Limit: 400MS Memory Limit: 65536KB
Problem Description
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。Input
输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。Output
输出平衡二叉树的树根。Example Input
5 88 70 61 96 120
Example Output
70
#include <bits/stdc++.h> using namespace std; typedef struct node{ int data,length; struct node *l,*r; }*tree; int n,m,flag; int length(tree root) { if(root==NULL) return -1; else return root->length; } tree RR(tree root) { struct node *temp = root->r; root->r = temp->l; temp->l = root; temp->length = max(length(temp->l),length(temp->r))+1; root->length = max(length(root->l),length(root->r))+1; return temp; } tree LL(tree root) { node *temp = root->l; root->l = temp->r; temp->r = root; temp->length = max(length(temp->l),length(temp->r))+1; root->length = max(length(root->l),length(root->r))+1; return temp; } tree RL(tree root) { root->r = LL(root->r); return RR(root); } tree LR(tree root) { root->l = RR(root->l); return LL(root); } tree creat(int x,tree root) { if(root==NULL) { root = new node; root->data = x; root->length =0; root->l = root->r = NULL; } else if(x>root->data) { root->r = creat(x,root->r); if(length(root->r)-length(root->l)>1) { if(root->r->data<x) root = RR(root); else root = RL(root); } } else if(x<root->data) { root->l = creat(x,root->l); if(length(root->l)-length(root->r)>1) { if(root->l->data<x) root = LR(root); else root = LL(root); } } root->length = max(length(root->l),length(root->r))+1; return root; } int main() { int x; cin>>n; struct node *root = NULL; for(int i =0; i<n; i++) { cin >> x; root = creat(x,root); } cout << root->data <<endl;; return 0; }
相关文章推荐
- 数据结构实验之查找二:平衡二叉树---3374
- 数据结构实验之查找二:平衡二叉树【OJ--3374】
- SDUT-3374 数据结构实验之查找二:平衡二叉树
- SDTU(3374) 数据结构实验之查找二:平衡二叉树
- SDUT 3374 数据结构实验之查找二:平衡二叉树
- (模板题)sdut 3374 数据结构实验之查找二:平衡二叉树(平衡二叉树的建立)
- SDUT 3374 数据结构实验之查找二:平衡二叉树
- 3374 数据结构实验之查找二:平衡二叉树
- 3374-数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- sdutacm-数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 数据结构实验之查找二:平衡二叉树
- SDUTACM 数据结构实验之查找二:平衡二叉树