求课程设计:二叉平衡排序树

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:16:33
课程设计题目:
二叉平衡排序树(限1 人完成)
问题描述:从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。最终要把创建好的二叉排序树转换为二叉平衡排序树。
基本要求:1.创建(插入、调整、改组)
2.输出

因为怕没有人回答上来浪费,先放20分,如果回答上来了,一定再+100分,说实在的,我不在乎这个分的!

非原创,希望对你有帮助

#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int key;
struct node *lchild,*rchild;
}BSTNode;

//创建二叉排序树
int InsertBST(BSTNode *&p,int k)
{
if (p==NULL)
{
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
p->lchild=p->rchild=NULL;
return 1;
}
else if (k==p->key)
return 0;
else if (k<p->key)
return InsertBST(p->lchild,k);
else
return InsertBST(p->rchild,k);
}
BSTNode *CreatBST(int A[],int n)
{
BSTNode *bt=NULL;
int i=0;
while (i<n)
{
InsertBST(bt,A[i]);
i++;
}
return bt;
}

//二叉排序树上的查找