平衡二叉树旋转机制
平衡二叉树旋转机制

平衡二叉树旋转机制

平衡二叉树旋转机制

第一种:LL类失衡—左子树更高,且左子树的左节点更高

image-20250925173048394

解决办法:将数字为三的子节点固定,将二叉树整体往右旋,原先的右节点成为根节点的左节点

image-20250925173303544

第二种:RR类失衡

与LL类情况呈镜像,失衡结点的右子树更高,且其右子树 的右边依然更高(如图中的结点4,其右子树依然更高)

image-20250925173411650

修正后的二叉树如下,与LL的处理方式依然是镜像相同, 将失衡结点(2)的右孩子”钉”起来,逆时针(向左)旋转,让4成 为新的根结点,然后再将4的左孩子成为原来根结点(2)的 右孩子

image-20250925173426675

第三种:LR类失衡

LR 类失衡是指失衡结点的左子树更高,且其右子树更高的 失衡情况.此类情况的处理倘若再是简单的右旋,不会达到平 衡状态.因此,我们需要先对左子树 左旋(使其变为LL 型),再对根节点 右旋。

image-20250925173627048

如下,先将右子树向左旋转,即结点4成为新的失衡结点,2 成为4的左子树,而非父结点,与此同时,4的左孩子成为2 的右孩子.

image-20250925173646542

让4成为新的根结点,4的右孩子成为6的 左孩子.如此,即可使二叉树平衡

image-20250925173730012

红黑树

是一个二叉查找树

不是高度平衡的

条件:特有的红黑规则

红黑规则:

  1. 每一个节点或是黑色的,或是红色的
  2. 根节点必须是黑色的
  3. 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为NULL,这些Nil视为叶节点,每个叶节点是黑色的
  4. 如果某一个节点是红色的,那么它的子节点必须是黑色的(不能出现两个红色节点相连的情况)
  5. 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

Screenshot_20250925_181619_tv.danmaku.bili

相关条目

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注