#初学者系列#红黑树与AVL的区别、相同点与混淆点

数据结构的内容都忘得差不多了,今天重新拾起来了,我们来讲讲红黑树与AVL的区别、相同点与混淆点。

首先:二叉排序树(Binary Sort Tree)又称二叉查找树,亦称二叉搜索树平衡二叉树又被称为AVL树(有别于AVL算法)

二叉排序树或者是一棵空树,或者是具有下列性质的 二叉树
(1)若左子树不空,则左子树上所有结点的值均小于它的 根结 的值;
(2)若右子树不空,则右子树上所有结点的值均大于或 等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的节点。
之所以要先提到 二叉排序树,是因为平衡二叉树是一种二叉排序树,其中的每一个节点的左子树和右子树的高度差至多为1。

平衡二叉搜索树具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log2n),大大降低了操作的时间复杂度。

而之后有人发明了一个更好的对数进行平衡的数据结构——红黑树

一般的,红黑树同时满足以下五大特性:
1.所有节点的颜色是红色或者黑色;
2.根节点是黑色;
3.所有的叶子节点是黑色(叶子节点包含NULL);
4.每个红色的节点都有两个黑色的子节点;

5.从任意节点出发,到其所有叶子节点的简单路径上都包含相同数目的黑色节点.

红黑树用颜色标识高度,追求局部平衡而不是严格平衡。





猜你喜欢

转载自blog.csdn.net/hgh813210/article/details/48106329