美文网首页
2019-08-12 面试考点之红黑树

2019-08-12 面试考点之红黑树

作者: 惜小八 | 来源:发表于2019-10-10 11:57 被阅读0次

1.红黑树的由来

红黑树是一种平衡二叉树,我们直到红黑树是由二叉查找树演变而来的,

1, 左子树上所有的节点的值均小于或等于他的根节点的值

2, 右子数上所有的节点的值均大于或等于他的根节点的值

3, 左右子树也一定分别为二叉排序树
二叉查找树

但是有时候会出现这样的情况:


image.png

此二叉查找树的效率和线性查找差不多,效率十分低下,由此引出了红黑树,它是一种平衡二叉查找树。

2.红黑树

1.红黑树的定义和性质

红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:

性质1:每个节点要么是黑色,要么是红色。
性质2:根节点是黑色。
性质3:每个叶子节点(NIL)是黑色。
性质4:每个红色结点的两个子结点一定都是黑色。
性质5:任意一结点到每个叶子结点的路径都包含数量相同的黑结点。

从性质5又可以推出:

性质5.1:如果一个结点存在黑子结点,那么该结点肯定有两个子结点

2.红黑树能自平衡,它靠的是什么?三种操作:左旋、右旋和变色。

左旋:以某个结点作为支点(旋转结点),其右子结点变为旋转结点的父结点,右子结点的左子结点变为旋转结点的右子结点,左子结点保持不变。如图3。

右旋:以某个结点作为支点(旋转结点),其左子结点变为旋转结点的父结点,左子结点的右子结点变为旋转结点的左子结点,右子结点保持不变。如图4。

变色:结点的颜色由红变黑或由黑变红。
image.png

相关文章

  • 2019-08-12 面试考点之红黑树

    1.红黑树的由来 红黑树是一种平衡二叉树,我们直到红黑树是由二叉查找树演变而来的, 但是有时候会出现这样的情况: ...

  • 数据结构 - 红黑树

    更多数据结构内容,请参考:数据结构 - 概要 简介 红黑树介绍请参考: 漫画:什么是红黑树? 面试旧敌之红黑树 红...

  • 数据结构 - 收藏集 - 掘金

    面试旧敌之红黑树(直白介绍深入理解) - Android - 掘金 读完本文你将了解到: 什么是红黑树 黑色高度 ...

  • 彻底理解红黑树(二)之 插入

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的插入情况...

  • 彻底理解红黑树(三)之 删除

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的删除情况...

  • 红黑树笔记

    红黑树:R-B Tree [toc]参考:红黑树(一)之 原理和算法详细介绍红黑树(五)之 Java的实现 1 简...

  • Java 基础之数据结构:树

    现在面试问 MySQL、红黑树好像都是必备问题了。动不动就让手写红黑树或者简单介绍下红黑树。然而,我们如果直接去看...

  • 红黑树---面试

    BST二叉搜索树 树中插入的是随机数据时,执行效果很好 树中插入的是有序或逆序的数据,那么二叉搜索树就变得非平衡,...

  • 彻底理解红黑树(一)之二叉搜索树

    彻底理解红黑树(一)之二叉搜索树彻底理解红黑树(二)之插入彻底理解红黑树(三)之删除 1. 二叉搜索树的定义 二叉...

  • STL源码解析(1)-红黑树

    STL源码解析(1)-红黑树 STL容器之红黑树实现 C++中map和set都是基于红黑树的实现, 其迭代器也是红...

网友评论

      本文标题:2019-08-12 面试考点之红黑树

      本文链接:https://www.haomeiwen.com/subject/bnmyjctx.html