C语言 百分网手机站

AVL树的c语言实现

时间:2020-09-28 16:13:12 C语言 我要投稿

AVL树的c语言实现

  导语:C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的'机器码以及不需要任何运行环境支持便能运行的编程语言。下面我们来看看AVL树的c语言实现,希望对大家有所帮助。

  AVL树的c语言实现:在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。

  1.节点

  (1)节点的定义

1
2
3
4
5
6
7
8
9
typedef int KeyType;          
typedef struct AvlNode          
{          
   KeyType key;     //数据          
   AvlNode *leftchild;    //左孩子          
   AvlNode *rightchild;   //右孩子          
   AvlNode *parent;    //双亲结点          
   int balance;           //平衡因子          
}AvlNode,*AvlTree;          

  (2)结点的创建

1
2
3
4
5
6
7
8
9
10
11
12
AvlNode *BuyNode()          
{          
   AvlNode *p =(AvlNode *)malloc(sizeof(AvlNode));          
   if( p != NULL)          
   {          
       p->leftchild = NULL;          
       p->rightchild = NULL;          
       p->parent = NULL;          
       p->balance = 0;          
   }          
   return p;          
}          

  2.旋转

  如果在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:左单旋转,右单旋转,左平衡,右平衡。(1)左单旋转:也叫左左旋转。

【AVL树的c语言实现】相关文章:

C语言的HashTable简单实现11-21

PID算法的C语言实现10-06

如何实现C语言画图教程11-19

C语言常用库函数实现10-04

冒泡排序(C语言实现)10-04

希尔排序(C语言实现)12-05

C语言中实现KMP算法实例11-19

链表的C语言实现方法编程学习11-24

C语言实现的ls命令源码分享10-07