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; /pic/code> AvlNode *leftchild; /pic/code> AvlNode *rightchild; /pic/code> AvlNode *parent; /pic/code> int balance; /pic/code> }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语言程序的实现12-06
C语言的HashTable简单实现10-24
PID算法的C语言实现02-24
如何实现C语言画图教程10-03
C语言如何实现画图教程10-14
链表的C语言实现方法12-10
希尔排序(C语言实现)01-26
C语言常用库函数实现08-01
冒泡排序(C语言实现)12-01