7、输出二叉搜索树中所有值大于key的结点
进行遍历,如果值大于key直接输出
void OutPut(BiTree T,int key){
if(T==NULL)
return;
if(T->lchild!=NULL)
OutPut(T->lchild,key);
if(T->data>key)
printf("%d",T->data);
if(T->rchild!=Null)
OutPut(T->rchild,key);
}
8、判断一个二叉树是否为平衡二叉树
//求二叉树高度
int get_high(BiTree T){
if(T==NULL)
ruturn 0;
else
hl=get_high(T->lchild);
hr=get_high(T->rchild);
return hl>hr?hl+1:hr+1;
}
//判断是否为平衡二叉树
bool Judge_AVL(BiTree T){
int hl,hr;
if(T==NULL)
return false;
else{
hl=get_high(T->lchild);
hr=get_high(T->rchild);
if(abs(hl-hr)<=1)
return Judge_AVL(T->lchild)&&Judge_AVL(T->rchild);
else
return false;
}
}
六、排序
1、直接插入排序
每次都新插入一个数,数组范围:
0-0
0-1
0-n-1
void InsertSort(int A[],int n){
//临时变量与新插入的
int temp,newnum;
for(int i=1;i<n;i++){
newnum=i;
while(newnum-1>=0 && A[newnum]<A[newnum-1]){
temp=A[newnum-1];
A[newnum-1]=A[newnum];
A[newnum]=temp;
newnum--;
}
}
}
2、折半插入排序
void InsertSort(int A[], int n){
int low,high,mid;
for(int i=2;i<n;i++){
A[0]=A[i];//设立哨兵
low=1,high=i;
while(low<=high){
mid=(low+high)/2;
if(A[mid]>A[0])
high=mid-1;
else
low=mid+1;
}//找到插入位置
//开始插入 high+1为我们想要插入的位置
for(int j=i;j>high+1;j--){
A[j]=A[j-1];
}
A[high+1]=A[0];
}
}
3、冒泡排序
void BubbleSort(int A[],int n){
int temp;
for(int i=n-1;i>=0;i--){
for(int j=1;j<=i;j++){
if(A[j-1]>A[j]){
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
}
}
4、快速排序
void QuickSort(int A[],int n)
{
QSort(A,0,n-1);
}
void QSort(int A[],int low,int high)
{
int pivot;
if(low<high){
pivot = Partition(A,low,high);
Qsort(A,low,pivot-1);
Qsort(A,pivot+1,high);
}
}
//一趟快排
int Partition(int A[],int low,int high){
int pivot;
pivot=A[low];
while(low<high){
while(low<high && A[high]>pivot)
high--;
if(low<high){
A[low]=A[high];
low++;
}
while(low<high && A[low]<pivot)
low++;
if(low<high){
A[high]=A[low];
high--;
}
A[low]=pivot;
return low;
}
5、选择排序
void SelectSort(int A[], int n){
int min;
int jilu;
for (int i = 0; i < n; i++)
{
min = i;
for (int j = i; j < n; j++)
{
if (A[j]<A[min])
{
min = j;
}
}
if (min!=i)
{
swap(A, i, min);
}
}
}
这篇博客介绍了如何在二叉搜索树中输出所有大于指定key的节点,并提供了判断平衡二叉树的方法。同时,文章详细讲解了直接插入排序、折半插入排序、冒泡排序和快速排序、选择排序这五种经典的排序算法的实现细节。

被折叠的 条评论
为什么被折叠?



