红黑树和AVL树(平衡二叉树)的定义、特点以及两者的区别

匿名 (未验证) 提交于 2019-12-03 00:05:01

红黑树和AVL树(平衡二叉树)的定义、特点以及两者的区别

定义

AVL树:平衡二叉树又称AVL树,是一种特殊的二叉查找树,其左右子数都是平衡二叉树,且左右子树高度差的绝对值不超过1.一句话表述为:以树中所有结点为根的树的左右子树高度差的绝对值不超过1.将二叉树上结点的左子树深度减去右子树深度称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只可能是-1、0和1.只要二叉树上有一个结点的平衡因子的绝对值大于1,该二叉树就是不平衡的。

红黑树:是一种二叉查找树,但在每个结点增加一个存储位表示结点的颜色,可以是红或者黑(非黑即红)。通过对任何一条从根到叶子的路径上各个结点着色的方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因此红黑树是一种弱平衡二叉树,相对于要求严格的AVL树来说,它的旋转次数少,所以对于搜索、插入、删除操作比较多的情况下,通常使用红黑树。

性质

红黑树的性质如下:1.每个结点非红即黑;2.根节点是黑的;3.每个叶节点(叶节点即树尾端NULL指针或NULL结点)都是黑的;4.如果一个结点是红色的,则它的子节点必须是黑色的;5.对于任何结点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑结点。

区别

区别:AVL树是高度平衡的,频繁的插入和删除,会引起频繁的rebalance,导致效率下降;红黑树不是高度平衡的,算是一种折中,插入最多两次旋转,删除最多三次旋转。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!