红黑树
红黑(Red-black)树
是一种自平衡二叉查找树,1972年由Rudolf Bayer发明,它与AVL树类似,都在插入和删除操作时能通过旋转操作保持二叉查找树的平衡,以便能获得高效的查找性能。**它可以在 O(logn) 时间内做查找,插入和删除等操作。**红黑树是2-3-4树的一种等同,但有些红黑树设定只能左边是红树,这种情况就是2-3树的一种等同了。对于AVL树来说,红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树。
特点:
- 节点是红色或黑色。
- 根节点是黑色。
- 每个叶节点(NIL节点)是黑色的。
- 每个红色节点的两个子节点都为黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
- 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
- 最长路径不超过最短路径的2倍

向红黑树中插入14的节点,由于15是黑色节点,所以没有破坏结构,不需要做任何的改变

如果向树中插入21的话,会破坏红黑树的规则,必须要调整,就是变色和旋转

为了符合红黑树的规则,会把节点红变黑或者黑变红,21,22是连续的红色,因此要将22红变黑

此时,不符合规则5,因此需要将25黑变红

此时还没有结束,因为25和27都出现了红色,因此需要将27变成黑色

旋转跳跃
左旋: 逆时针旋转,父节点被自己的右孩子取代,而自己成为自己的左孩子

右旋:顺时针旋转,父节点被做孩子取代,而自己成为自己的右孩子


红黑树是一种自平衡二叉查找树,由Rudolf Bayer于1972年发明。它通过旋转操作在O(logn)时间内保持查找、插入和删除的高效性能。红黑树的特点包括节点颜色为红黑、根节点为黑色、红色节点的子节点必须为黑色等。插入节点可能导致树不平衡,需要通过变色和旋转来调整,如左旋和右旋操作,以维持树的性质。
8万+

被折叠的 条评论
为什么被折叠?



