本文由浅入深介绍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
在这里插入图片描述
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐