博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
平衡二叉树的学习
阅读量:5081 次
发布时间:2019-06-13

本文共 2630 字,大约阅读时间需要 8 分钟。

数据结构实验之查找二:平衡二叉树

Time Limit: 400 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
Problem Description
根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。

Input

输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。

Output

输出平衡二叉树的树根。

Sample Input

5
88 70 61 96 120
Sample Output
70

#include
#include
struct node{
int data; int height;//高度 struct node *left, *right;};//节点int N;//元素的个数typedef struct node* Node;int deep(Node T){
if(T == NULL)return 0; else return T->height;}Node LL(Node T){
Node temp; temp = T->left; T->left = temp->right; temp->right = T; T->height = deep(T->left)>deep(T->right)?deep(T->left)+1:deep(T->right)+1; temp->height = deep(temp->left)>deep(temp->right)?deep(temp->left)+1:deep(temp->right)+1; return temp;}Node RR(Node T){
Node temp; temp = T->right; T->right = temp->left; temp->left = T; T->height = deep(T->left)>deep(T->right)?deep(T->left)+1:deep(T->right)+1; temp->height = deep(temp->left)>deep(temp->right)?deep(temp->left)+1:deep(temp->right)+1; return temp;}Node LR(Node T){
T ->left = RR(T->left); T = LL(T); return T;}Node RL(Node T){
T->right = LL(T->right); T = RR(T); return T;}Node Insert(Node T, int num){
if(T == NULL)//如果为空 {
T = (Node)malloc(sizeof(struct node)); T ->data = num; T->left = NULL; T->right = NULL; T->height = 1; } if(T->data == num)return T;//如果 不能储存相等的 , else if(num < T->data)//如果比他小 {
T->left = Insert(T->left, num); if(deep(T->left)-deep(T->right)>1) {
if(num
left->data) {
T = LL(T); } else {
T = LR(T); } } } else if(num > T->data)//如果比他大 {
T->right = Insert(T->right, num); if(deep(T->right)- deep(T->left)>1) {
if(num > T->right->data) {
T =RR(T); } else {
T =RL(T); } } } T->height = deep(T->left)>deep(T->right)?deep(T->left)+1:deep(T->right)+1; return T;}Node Creat(){
Node T = NULL; int i; int num;//插入的数 for(i = 0; i < N; i++) {
scanf("%d", &num); T = Insert(T, num); } return T;}int main (){
Node root = NULL;//根节点 scanf("%d",&N); root = Creat(); printf("%d", root->data); return 0;}

转载于:https://www.cnblogs.com/TJack/p/10526953.html

你可能感兴趣的文章
ML(7)——支持向量机1(构建支持向量机)
查看>>
代码覆盖率 EclEmma
查看>>
c#编程:使用"like“查询access数据库查询为空
查看>>
Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的...
查看>>
oracle常用管理命令
查看>>
构建之法第四章两人合作
查看>>
kmp-洛谷P2375 动物园
查看>>
杂曲歌辞·杨柳枝
查看>>
swiftmailer时没有设置https的选项,才可以发送成功。在linux下面
查看>>
C#程序分析
查看>>
(6)javascript 基本概念--- -- 函数
查看>>
在Windows服务中托管 ASP.NET Core的坑
查看>>
Linux MySQL主从复制(Replication)配置
查看>>
多表联查
查看>>
suoi46 最大和和 (线段树)
查看>>
Direct2D Brush操作
查看>>
Fire!
查看>>
wp7开发5启动器和选择器
查看>>
hdu 1016
查看>>
架构设计:生产者/消费者模式
查看>>