//平衡二叉树,或者称为AVL树
#include<iostream>
using namespace std;
typedef int status;
#define true 1
#define false 0
#define LH +1 //左高
#define EH 0 //等高
#define RH -1 //右高
//二叉链表结点结构定义
typedef struct Bitnode
{
int data;
int bf; //储存结点的平衡因子
struct Bitnode *left,*right;
}Bitnode,*Bitree;
//操作
void R_rotate(Bitree *p);
void L_rotate(Bitree *p);
void Leftbalance(Bitree *T);
void Rightbalance(Bitree *T);
status Insertavl(Bitree *T,int e,status *taller);
void Createavl(Bitree *T,int a[],int n);
void Showbst(Bitree T); //中序遍历输出二叉树
//f指向T的双亲,当T指向根节点时,因此f的初始调用值为Null
//查找成功,指针p指向该数据元素的结点,返回TRUE
//查找失败,P指向查找路径上访问的最后一个元素,返回false
Bitree Searchavl(Bitree T,int key)
{
if (!T)
return NULL;
//搜索到
if (key==T->data)
return T;
else if (key<T->data)
{
//在左子树中搜索
return Searchavl(T->left,key);
}
else
{
//在右子树中搜
平衡二叉树(AVL树)创建、查找、插入操作 《大话数据结构》 c++实现代码
最新推荐文章于 2023-03-19 16:53:38 发布