红黑树、二叉查找树

一、红黑树Red-black Tree:

` 红黑树一种自平衡二叉查找树,是计算机科学中用到的一种数据结构,典型用途是实现关联数组。红黑书很复杂,但是他的操作有良好的最坏情况运行时间,不管是查找、插入和删除,他的时间复杂度都是O(logn),其中的n是树中元素的数目。

二、二叉查找树Binary Search Tree:

` 二叉查找树也称二叉搜索树、有序二叉树(ordered binary tree)、排序二叉树(sorted binary tree)。是指一颗空树或者具有以下性质的二叉树:
  (1)若任意节点的左子树不为空,则左子树上所有节点的值均小于它根节点的值。
  (2)若任意节点的右子树不为空,则右子树上所有节点的值均大于它根节点的值。
  (3)任意节点的左右子树也分别为二叉查找树
没有键值相等的节点,也就是节点唯一。

三、红黑树特征:

` (1)每一个节点不是黑色就是红色;
  (2)根节点总是黑色的;
  (3)每一个叶子结点都是黑色的空节点(NIL节点);
  (4)如果一个节点是红色的,那么它的子节点一定是黑色的,反之不成立;
  (5)从根节点到任意一个最底下的子节点,这条路径中所包含的黑色节点个数必须是相同的,即黑色节点的高度是相同的;
  (6)在插入节点时,插入的节点一定是红色节点。插黑节点一定会冲突,不能保证黑色节点高度一致;但是插入红色节点,有一半概率会冲突,不能保证红色节点的子节点是黑色节点。

四、平衡性修正的方法:

` (1)变色
父节点为黑,两个子节点为红,变色就是将父节点变红,子节点都变黑。
  (2)左旋
在这里插入图片描述
  (3)右旋
在这里插入图片描述

五、红黑树的自平衡修正规律:

` (1)如果父节点和叔父节点都是红色,则将父节点以及叔父节点涂黑,将祖父节点涂红;
  (2)如果父节点是红色且叔父节点是黑色,并且当前结点是右子节点,以当前节点为基准进行左旋;
  (3)如果父节点是红色且叔父节点是黑色,并且当前节点是左子节点,以父节点为基准进行右旋。
  如下例子:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值