2.2 KiB
2.2 KiB
title | localeTitle |
---|---|
Red Black Trees | 红黑树 |
红黑树
Red-Black Tree是一种自平衡二进制搜索树(BST),其中每个节点都遵循以下规则。
- 每个节点都有两个孩子,颜色为红色或黑色。
- 每个树叶节点始终为黑色。
- 每个红色节点都有两个黑色的孩子。
- 没有两个相邻的红色节点(红色节点不能有红色父节点或红色节点)。
- 从根到树叶节点的每条路径都具有相同数量的黑色节点(称为“黑色高度”)。
为什么红黑树?
大多数BST操作(例如,搜索,最大,最小,插入,删除等)需要O(h)时间,其中h是BST的高度。对于倾斜的二叉树,这些操作的成本可能变为O(n)。如果我们确保在每次插入和删除后树的高度保持为O(Logn),那么我们可以保证所有这些操作的O(Logn)的上限。红黑树的高度始终为O(Logn),其中n是树中的节点数。
与AVL树的比较
与红黑树相比,AVL树更加平衡,但它们可能在插入和删除期间引起更多旋转。因此,如果您的应用程序涉及许多频繁的插入和删除,那么应该首选红黑树。如果插入和删除频率较低且搜索操作更频繁,那么AVL树应优先于红黑树。
左倾红黑树
左倾红黑(LLRB)树是一种自平衡二分搜索树。它是红黑树的变体,保证了操作的渐近复杂度,但设计更容易实现。
左倾红黑树的性质
所提出的所有红黑树算法的特征在于在N个密钥树中由log N的小常数倍限定的最坏情况搜索时间,并且在实践中观察到的行为通常比最坏情况下,接近检查的最佳log N节点,这将在完美平衡的树中观察到。
具体来说,在一个由N个随机键构建的左倾红黑色2-3树中: - >随机成功搜索检查log2 N - 0.5节点。 - >平均树高约为2 log2 N.