这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战
疑问
-
还记得上文我们提到的数据结构二叉树吗?二叉树使我们对树的统称。
-
在上文我们提到的满二叉树我们又可以理解成是一颗平衡二叉树。这种定义更加符合他的特征。
-
如果一个二叉树只有左节点或者说只有右节点时这种情况我们完全可以理解成一个链表。
平衡二叉树
- 平衡二叉树又叫做Self-balancing binary search tree 。 平衡二叉树是二叉树的一种特例
- 在二叉树中有一个定义平衡度(平衡因子)的概念。他的公式是左右高度的绝对值。
- 当这个平衡度<=1的时候我们就称之为平衡二叉树
- 在平衡二叉树中他的高度是最稳定的,换句话说平衡二叉树和其他二叉树相比能够在相同的节点情况下保证树的高度最低;这也是为什么mysql中索引的结构是一种平衡二叉树的升级版
- 这里为什么平衡二叉树被广泛的推广呢?因为他的平衡性他能够保证在相同节点的情况下二叉树不会被认为是链表。他始终保持了二叉树的特性。保证数据被平均分配在树的两侧这样在我们查询的时候能够尽量提高我们的分治效率!
- 正是因为这一点他才会被广泛使用。使用最显著的就是在数据库的索引查询上。
总结
- 整颗二叉树他的平衡度始终在1以内。不会让二叉树左右悬殊太大
- 每个节点往下看可以看做是一颗平衡二叉树
- 综上才能认为是一颗平衡二叉树
扩展
- 在平衡二叉树的基础上我们还会衍生出B+Tree 等数据结构。了解mysql索引的同学应该不会陌生。在innodb的索引数据结构中正是采用的B+Tree 。在结构上我们可以将平衡二叉树和B+Tree看成等同价值。只不过B+Tree主要是针对磁盘进行管理的。
关注我,不迷路哦!!!