索引之二叉查找树,平衡二叉树

二叉查找树(二分查找)

不合适做索引,因为当数据库中的数据变更时(删除/新增节点),可能会变为一个线性表,那么查找的效率会很低.
二叉查找树
删除增加节点

平衡二叉树

1 :每个节点最多只能有二个孩子节点
2 :左子树的值小于根节点的键值,右子树的键值大于根节点的键值。
3 :任意节点的左子树和右子树的高度差的绝对值不超过1(平衡二叉树的特点)
平衡二叉树
非平衡二叉树

平衡二叉树进行插入操作可能导致失去平衡

LL(左左插入失去平衡):
左左失去平衡(左边高,右边低) 我们需要把根节点的左孩子作为新的根节点,进行旋转.得到新的树节点。
在这里插入图片描述
LR(左右插入节点,导致树失去平衡) :向跟节点的左孩子的右孩子插入 导致树失去平衡
LR(左右插入节点,导致树失去平衡)
需要二次旋转:第一次 旋转4 6,把6作为跟节点
在这里插入图片描述
第二次旋转 6 8旋转,把6作为跟节点为
在这里插入图片描述
平衡二叉树虽然解决了二叉树增加或者删除节点的时候,一棵树容易拉变为一个线性表的缺点(通过旋转),但是他总归还是一个二叉树,当节点的个数很多的时候,那么树的层级就会变的很深 很深,递归查询很费时间.

猜你喜欢

转载自blog.csdn.net/eluanshi12/article/details/87259377
今日推荐