数据结构实验之查找二:平衡二叉树
来源:互联网 发布:网络歌曲主的爱 编辑:程序博客网 时间:2024/06/06 10:49
数据结构实验之查找二:平衡二叉树
Time Limit: 400ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。
输入
输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。
输出
输出平衡二叉树的树根。
示例输入
588 70 61 96 120
示例输出
70
#include<bits/stdc++.h>using namespace std;struct node{ int data; int height; node *left; node *right;};int height(node *root){ if(root==NULL)return 0; return root->height;}node* LL(node *root){ node* temp; temp=root->left; root->left=temp->right; temp->right=root; root->height=max(height(root->left),height(root->right))+1; temp->height=max(height(temp->left),height(temp->right))+1; return temp;}node* RR(node *root){ node*temp; temp=root->right; root->right=temp->left; temp->left=root; root->height=max(height(root->left),height(root->right))+1; temp->height=max(height(temp->left),height(temp->right))+1; return temp;}node* LR(node *root){ root->left=LL(root->left); return LL(root);}node* RL(node *root){ root->right=RR(root->right); return RR(root);}node* creat(node *root,int data){ if(root==NULL) { root=new node; root->data=data; root->left=root->right=NULL; root->height=1; } else if(data>root->data) { root->right=creat(root->right,data); if(height(root->right)-height(root->left)==2) { if(data>root->right->data)root=RR(root); else root=RL(root); } } else if(data<root->data) { root->left=creat(root->left,data); if(height(root->left)-height(root->right)==2) { if(data>root->left->data)root=LR(root); else root=LL(root); } } root->height=max(height(root->left),height(root->right))+1; return root;}int main(){ node *root=NULL; int num; cin>>num; for(int i=0;i<num;i++) { int data; cin>>data; root=creat(root,data); } printf("%d\n",root->data);}
0 0
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树【OJ--3374】
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUT 3374 数据结构实验之查找二:平衡二叉树
- SDUT3374数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找二:平衡二叉树
- SDUTACM 数据结构实验之查找二:平衡二叉树
- 用回调函数实现冒泡排序
- php--多维数组排序函数array_multisort
- mongoDB数据库设置用户名及密码-windows
- C++ string的一个误用
- 使用Python实现Hadoop MapReduce程序
- 数据结构实验之查找二:平衡二叉树
- poj 1840 Eqs
- Android OpenGL ES学习笔记之材质概念和添加光照
- 懒虫的思维
- 数据结构上机测试1:顺序表的应用
- 独立同分布 正态分布
- (universal Image Loader)UIL 使用 (2)
- php 操作mongodb
- CCS5.4+Proteus8的F28027实践课八、内置温度传感器