二叉树剪枝_一文读懂平衡二叉树

本文介绍了平衡二叉树(AVL树)的概念,探讨了二叉搜索树的优势以及为何需要引入平衡二叉树。通过平衡二叉树,可以避免搜索效率降低到O(n)的情况,保证了搜索、插入操作的时间复杂度为O(logn)。文章详细讲解了四种旋转操作:LL、RR、LR、RL,以及如何根据插入位置判断并调整树的平衡状态。
摘要由CSDN通过智能技术生成

平衡二叉树,又称AVL树,指的是左子树上的所有节点的值都比根节点的值小,而右子树上的所有节点的值都比根节点的值大,且左子树与右子树的高度差最大为1。因此,平衡二叉树满足所有二叉排序(搜索)树的性质。至于AVL,则是取自两个发明平衡二叉树的科学家的名字:G. M. Adelson-Velsky和E. M. Landis。

二叉搜索树

平衡二叉树是在二叉排序树的基础上发展而来的,那为什么要引入二叉搜索树呢?

所谓二叉搜索树(Binary Search Tree),又叫二叉排序树,简单而言就是左子树上所有节点的值均小于根节点的值,而右子树上所有结点的值均大于根节点的值,左小右大,并不是乱序,因此得名二叉排序树。

一个新事物不能凭空产生,那二叉搜索树又有什么用呢?

有了二叉搜索树,当你要查找一个值,就不需要遍历整个序列或者说遍历整棵树了,可以根据当前遍历到的结点的值来确定搜索方向,这就好比你要去日本,假设你没有见过世界地图,你不知道该往哪个方向走,只能满地球找一遍才能保证一定能够到达日本;而如果你见过世界地图,你知道日本在中国的东边,你就不会往西走、往南走、往北走。这种思维在搜索中被叫做“剪枝”,把不必要的分枝剪掉可以提高搜索效率。在二叉搜索树中查找值,每次都会把搜索范围缩小,与二分搜索的思维类似。

dd026e68335fdd4a7e93e573ba4b1452.png

如下图所示的二叉搜索树:

f385af128e8db4c2da4abfb5b7deb634.png

要想查找到8,则是先到达根节点,其值为5,8比5大因此继续往右子树上找,到达9,8比9小因此往左子树上找,最终找到8;

要想查找4,则是先到达根节点其值为5,4比5小因此往左子树上找,到达1,4比1大因此往右子树上找,到达3,4比3大因此往右子树上找,而值为3的节点的右子树是空的,因此该搜索二叉树中不存在值为4的节点。

有了二叉排序树就可以使插入、搜索效率大大提高了,为什么还要引入平衡二叉树?

二叉搜索树的结构与值的插入顺序有关,同一组数,若其元素的插入顺序不同,二叉搜索树的结构是千差万别的。举个例子,给出一组数[1,3,5,8,9,13]。

若按照[5,1,3,9,13,8]这样的顺序插入,其流程是这样的:

32ce02985ae701f1444963e369b0bfef.png

若按照[1,3,5,8,9,13]这样的顺序插入,其流程是这样的: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值