线性数据结构&BST,Balanced BST,2-3-4树

  1. 线性表数据结构
    1. 数组aray
      1. 内存地址连续
      2. 可以通过下标的成员访问,检索性能高
      3. 增删操作性能消耗高,需要保证数据不越界,动态扩容
    2. 队列queue
      1. FIFO
    3. 链表list
      1. 内存地址不连续,跳转结构
      2. 查询需要遍历,检索效率低
      3. 增删效率高,更改指针指向即可
      4. 单向链表,双向链表
    4. 栈stack
      1. LIFO,先进后出,后进先出
  2. 非线性数据结构
      1. root唯一
      2. 子树没有限制且互相不相交
      3. 内存中不连续,做增删比数组效率高,查找是二分查找没有数组通过下标效率高,但是比链表效率高
      4. 度数:节点拥有的子树数目称为节点的度
      5. 层数从root层开始数
    1. 二叉树

      1. 每个节点至多拥有两节字数【不存在度大于2的节点】
      2. 二叉查找树
        1. 左子树的任意节点不为空的话,左子树的值均小于根节点的值
        2. 右子树的任意节点不为空的话,且右子树的值均大于根节点的值
        3. 任意节点的左右子树也分别是二叉查找树
        4. 没有值相等的节点
      3. 遍历操作

      在这里插入图片描述

       1. 先序遍历:根,左,右
       2. 中序遍历:左,根,右
       3. 后序遍历:左,右,根
      
      1. 最小值最大值前驱节点后继节点
        1. 查找最小值:沿着根节点的左子树一路查找,知道最后一个不为空的节点,该节点就是这个树的最小节点

        2. 查找最大值:沿着根节点的右子树一路查找,知道最后一个不为空的节点,该节点就是当前这个树的最大节点

        3. 前驱节点后继节点

          1

        4. 查找前驱节点:小于当前节点的最大值

        5. 查找后继节点:大于当前节点的最小值

      2. 删除节点
        1. 删除之后,找前驱节点或后继节点来替代
        2. 叶子节点直接删除
        3. 有一个子节点用子节点代替
        4. 有两个子节点,需要找到替代节点
      3. 平衡二叉查找树 balanced BST
        1. BST存在的问题是极端情况下所有的节点都会在一条斜线上,高度为N,二平衡树在插入和删除的时候,会通过旋转操作将高度保持在LogN。查询效率更高。

      balanced bst

       1. AVL树【度数差不超过1,左旋右旋,开销较大】和红黑树【黑节点平衡】
      
      1. 2-3-4树

        1. 所有叶子节点都拥有相同深度
        2. 节点是2-节点,3-节点,4-节点之一
          1. 2-节点:包含1个元素的节点,有2个子节点
          2. 3-节点:包含2个元素的节点,有3个子节点
          3. 4-节点:包含3个元素的节点,有4个子节点

        在这里插入图片描述
        在这里插入图片描述

      在这里插入图片描述

       1. 所有节点必须至少包含1个元素
      
      1. 红黑树
        1. 起源于2-3-4树,本质是2-3-4树

        2. 2节点

          1. 一个2节点对应的红黑树节点就是一个黑色节点

          在这里插入图片描述

        3. 3节点

          1. 一个3节点可以有两种情况的红黑树节点,一种是右倾一种是左倾,所以一个2-3-4树可以有多个红黑树
          2. 原则:上黑下红

        4. 4节点

          1. 中间节点黑色,左右节点红色,上黑下红

          在这里插入图片描述

        5. 裂变状态

          1. 转换为红黑树后会先变色(不能有两个相邻的红色节点)

          在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值