设为首页 加入收藏

TOP

AVL树的c语言实现
2017-06-08 10:22:30 】 浏览:1142
Tags:AVL 语言 实现
AVL树的c语言实现:在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 节点 (1)节点的定义
typedef int KeyType;
typedef struct AvlNode
{
    KeyType key;     //数据
    AvlNode *leftchild;    //左孩子
    AvlNode *rightchild;   //右孩子
    AvlNode *parent;    //双亲结点
    int balance;           //平衡因子
}AvlNode,*AvlTree;

(2)结点的创建

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)左单旋转:也叫左左旋转。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言算法训练 安慰奶牛 下一篇C语言模拟最高优先数优先进程调度..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目