博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再回首数据结构—红黑树(一)
阅读量:4668 次
发布时间:2019-06-09

本文共 813 字,大约阅读时间需要 2 分钟。

红黑树与AVL树一样同为二分搜索树,红黑树又称为是保持“黑平衡”的二叉树,红黑树最大高度为:2logn,红黑树由这么几个独特的特征:

  1、每个节点或黑或红
  2、根节点为黑色
  3、每个叶子节点(最后的空节点)都为黑色
  4、如果一个节点为红色,则他孩子节点全为黑色
  5、从任意节点到叶子节点,经过的黑色节点为一样多的
  6、所有红色节点都向左倾斜

enter image description here

  在之前的二叉搜索树中我们在实现的节点结构中定义了用于存储元素的e、用于存放左子树的left、用于存放右子树的right等对象,而在AVL树中比二叉搜索树有所不同由于AVL需要维护左右子树的节点高度所以多了一个元素height用于存放节点的高度;

  红黑树也是基于之前二叉搜索树变体而来的,在红黑树中节点也只比二叉搜索树多一个元素,二叉搜索树的节点由以下元素组成:

  e :用于存储节点元素

  left: 用于存储左子树
  right:用于存储右子树
  color:用于标志节点颜色,节点是红色或黑色

红黑树的代码定义:

type RBT struct {    root    *RBTNode    size    int    compare Comparable } type RBTNode struct {    e     interface{}    left  *RBTNode    right *RBTNode    color bool }

根据红黑树的特性、定义可知:

  1、大小为N的红黑树其高度不超过2logN
  2、最坏情况下插入、查找元素的时间复杂度为:2logN
  3、平均情况下插入、查找元素的平均复杂度为:logN

  这里只简单介绍了红黑树的相关概念,下面将从代码实现的角度具体分析红黑树的实现;

转载于:https://www.cnblogs.com/softlin/p/11069141.html

你可能感兴趣的文章
面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力
查看>>
XCODE快捷键和功能汇总篇(不断更新)
查看>>
Servlet开发(一)
查看>>
linux下如何查看某个容器的详细信息?
查看>>
bzoj 2843: 极地旅行社
查看>>
车林通购车之家--购车计算器模块--算法js
查看>>
webpack使用教程
查看>>
MySQL学习8 - 数据的增删改
查看>>
Linux笔记(开机自动将kerne log保存到SD卡中)
查看>>
Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。...
查看>>
CodeForces 689E (离散化+逆元+组合)
查看>>
pycharm 右键无法显示unittest框架&&解决右键只有unittest 运行如何取消右键显示进行普通run...
查看>>
jQuery的选择器
查看>>
Shell 概述、截取字符操作等
查看>>
CTF/web
查看>>
第五章上 首次登陆
查看>>
第5堂:看到词句就会读-上
查看>>
Phpcms V9全站伪静态设置方法
查看>>
POJ 2176 Folding(区间DP)
查看>>
Dynamic Clock in Terminal.
查看>>