请要相信我,30分钟让你掌握AVL树(平衡二叉树)

本文适合初学者,通过详细解释和示例介绍AVL树的定义、平衡因子以及插入、删除操作,帮助读者在30分钟内掌握平衡二叉树的原理与实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

                    请要相信我,30分钟让你掌握AVL树(平衡二叉树)

前言:本文不适合 给一组数据15分钟就能实现AVL的插入和删除操作的大牛(也请大牛不要打击小菜)

本文适合,对avl还不了解,还没有亲自实现avl的插入和删除操作的同学

ps,你在嘲笑楼主的题目时,你已证明了自己正在嘲笑自己的智商。我们要善于征服陌生的事物。你如果有半个小时时间就心无杂念的开始吧,建议那些读10分钟文章就心燥还是关闭浏览器吧。


文章结构:


什么是二叉排序树(bst)
二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;
 

好了二叉排序树定义很好理解(如果还不理解,为了不浪费时间,先暂停一下,去google or baidu 下,理解了再继续),再此就不举别的例子了,下面我实现下BST的一些基本操作算法。
BST的基本操作
typedef struct _BitNode
{
    int data;
    struct _BitNode *lchild,*rchild;
}BitNode,*BiTree;
1.1 ,BST的搜索:
为什么先实现搜索呢?一般BST里面没有重复的元素,你增添或者删除元素,都必须要先查找一下,看有没有呀,所以BST搜索要先实现,这个搜索是很简单的,慢慢看我讲解吧,
我们先看这张图

假如你想找到数值为3的节点并给你这个树的根节点,且规定你只能看到这个根节点左右孩子(其他你们权限看到,也看不到)。那不就是很容易啦,先用3和根节点(此为6)比,显然比6小。那我就去找他的左孩子比,注意,此时4就是6的左子树的根了,那我们就和4这个新的树根比吧,显然又比4小。那我们就继续找这个新根的左孩子比,而此时3就是4的左子树的根了,那我们就和这个根比,哇塞,我们顺藤摸瓜,终于找到了哦!!,那我们就提炼一下这个过程吧,注意哦,我们每次都是和树根相比较的哦!
规则:
1.先和这棵树的根比
2.如果比这个树根小就和这个树根的左子树的根比,否则就和这个树根的右子树比。
3.重复2过程,直到根为空为止。
        根据3个步骤很容易实现递归代码。
//搜索元素,参数依次为0: 根节点,1: 查找的元素,2: 找到目标元素的前一个节点指针,初始值为NULL
// 3:如果返回真把目标到元素的指针指向n,返回假,就把pre复制给n)(参数如果不明白,先不要细究,往下看吧)
 bool SearchBST(BiTree T,int key,BiTree pre,BiTree&n);
 bool SearchBST(BiTree T,int key,BiTree pre,BiTree&n)
 {
     if(!T)
     {
         n=pre;       //如果此数为空树,那我们就把前一个元素指针pre(此时为NULL)复制给n,注意树为空时,n才为NULL。
         return false;   //返回假没有找到
     }
     else if(key==T->data)
     {
         n=T;        //找到了就把目标元素指针给n
         return true;
     }
     if(key<T->data)
         SearchBST(T->lchild,key,T,n) ;//去找他的左子树根比
     else
     {
         SearchBST(T->rchild,key,T,n);//去找他的右子树根比。
     }
 }
1.2 BST的增添元素算法实现
有了搜索这个功能,那我们的增添元素的功能就很容易实现了,
算法描述:
1.先搜所以下所增添的key,在不在此树里面。
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值