红黑树笔记

红黑树(特殊的平衡二叉树)笔记

本文参考《大话数据结构》

1.二叉树

在这里插入图片描述
二叉树的特点:
(1)二叉树最多只能有两棵子树,所以二叉树不存在度大于2的结点。
(2)左子树与右子树是存在顺序的,不能随意颠倒。
(3)即使树中某一结点只存在一棵子树,也要区分是左子树还是右子树。
二叉树的基本形态:
(1)空二叉树。
(2)只有一个根结点。
(3)根结点只有左子树。
(4)根结点只有右子树。
(5)根结点既有左子树又有右子树。

2.二叉树排序树

在这里插入图片描述

定义: 二叉排序树,又称为二叉查找树,它要么是一棵空树,要么是一棵具有下列性质的树:
(1)若它的左子树不为空,那么左子树上所有结点的值均小于根结点的值。
(2)若它的右子树不为空,那么右子树上所有结点的值均大于根结点的值。
(3)它的左右子树也分别是二叉排序树。

3.平衡二叉树

在这里插入图片描述

定义: 平衡二叉树是一种二叉排序树,其中每一个结点的左子树和右子树的高度差至多等于1。平衡二叉树又被称为AVL树。

平衡二叉树的左子树与右子树的深度差的绝对值不能超过1。

二叉树上的结点的左子树深度减去右子树的深度被称为平衡因子BF,因此平衡二叉树上所有结点的平衡因子只能是1、0、-1。只要有一个结点的平衡因子的绝对值大于了1,那就不是平衡二叉树。

平衡二叉树的构建思想就是,在构建二叉树的过程中,每插入每一个结点时,先检查是否破坏了二叉树平衡,若是,找出最小不平衡子树。在保证二叉树特性的前提下,调整最小不平衡子树各结点的链接关系,进行相应旋转,使其称为新的平衡子树。

4.红黑树

在这里插入图片描述

红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但 对之进行平衡的代价较低, 其平均统计性能要强于 AVL 。

红黑树具有以下性质:
(1)结点是红色或黑色。
(2)根结点是黑色。
(3)所有叶子都是黑色。(叶子是NIL结点)
(4)每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)
(5)从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。
(6)从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。

结点插入:
插入过程首先是根据一般二叉查找树的插入步骤, 把新结点 插入到 某个叶结点的位置上,然后将其着为红色。 为了保证红黑树的性质能继续保 持,再对有关结点重着色并旋转。

结点删除:
若删除的结点是红色,则不做任何操作,红黑树的任何属性都不会被破坏;若删除的结点是黑色的,显然它所 在的路径上就少一个黑色结点,红黑树的性质就被破坏了,这时执行旋转来修补这棵树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值