数据结构:rbt红黑树

本文由浅入深介绍rbt红黑树

一、数组:

1.特点:
内存连续,储存数据类型相同,查询快,增删慢
2.为什么数组查询快,增删慢?
查询快原因:因为内存连续,储存数据类型相同,所以每个数据占用的内存大小已知,可以根据起始位置与下标直接找到数据地址。
增删慢原因:因为如果在数组中间增删数据,增删位置后面的数据都要向前或向后移动。

二、链表:

在这里插入图片描述

1.特点:
内存不连续,储存数据类型可不相同,查询慢,增删快;
2.为什么链表查询慢,增删快?
查询慢原因:因为链表内存不连续,储存数据类型不同,无法通过下标直接定位到数据地址
增删快原因:因为如果在数组中间增删数据,只需要将上一个节点的next指向新节点,将新节点的next指向下一个节点。

三、树:

在这里插入图片描述
1.树的几个概念:

  • 根节点、子节点、叶子节点:

在这里插入图片描述

  • 节点的权:节点的值
  • 节点的度:叉数
  • 数的高度:层数

四、二叉树:

每个节点的度均小于等于2的树。树常用的算法是递归,有时while可代替递归。(注:二叉查找树是一种特殊的二叉树,相对较小的值保存在左节点中,较大的值保存在右节点中

五、满二叉树:

除了叶子节点外,其他节点都有左右两个节点,且叶子节点均在最后一层。
在这里插入图片描述

六、完全二叉树:

叶子在最后一层或倒数第二层,且最后一层从左到右连续,倒数第二层从右到左连续。满二叉树必定是完全二叉树。
在这里插入图片描述

七、二叉搜索树bst(Binary Search Tree):

1.定义:
bst(Binary Search Tree)二叉搜索树又称为二叉排序树:查询快,左节点小于,右节点大,(递归)
2.遍历:
前序、中序、后序、层次遍历;这里的序指的是父节点。

八、平衡二叉搜索树AVL:

1.定义:
满足bst(二叉搜索树),且所有节点平衡因子不大于1(平衡因子:每个节点的左/右子树的高度差的绝对值叫平衡因子)
2.不平衡节点:
平衡二叉树变不平衡路径上的第一个节点
3.平衡化处理:左旋/右旋/先左后右双旋转/先右后左双旋转:
旋转规律:找到插入节点回朔路径上第一个不平衡节点(bph),然后从不平衡节点(bph)向下数三个节点(这点很重要)
LL:如果在bph的左侧的左侧子树插入的节点,满足LL,从不平衡节点(bph)向下数的三个节点,需要右旋
RR:如果在bph的右侧的右侧子树插入的节点,满足RR,从不平衡节点(bph)向下数的三个节点,需要左旋
LR:如果在bph的左侧的右侧子树插入的节点,满足LR,从不平衡节点(bph)向下数的三个节点,需要先右旋再左旋
RL:如果在bph的右侧的左侧子树插入的节点,满足RL,从不平衡节点(bph)向下数的三个节点,需要先左旋再右旋

如:LL型:
R.right=N;
N.left=T3;
R=Root;
在这里插入图片描述

九、2-3树:

定义:一个节点一个或两个元素,平衡因子为0,满足bst;4节点分裂变为3个2节点,不平衡融合
在这里插入图片描述分裂:4节点变3个2节点
在这里插入图片描述

融合:
在这里插入图片描述

十、红黑树:

定义:红黑树其实就是带颜色2-3树,红节点表示和父节点组成3节点,注意红黑树叶子节点是null
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值