zoukankan      html  css  js  c++  java
  • 学习数据结构基础

    环形队列
    优先队列

    二叉树两种存储方式:链表,数组

    二叉查找树:左子树比根节点大,右子树比根节点小
    二叉树自平衡

    平衡二叉树:又叫AVL树
    平衡因子 <= 1
    是二叉搜索树
    LL RR
    左旋,右旋

    红黑树是一种包含红黑结点并能自平衡的二叉查找树
    红黑树不是完美平衡二叉树,就是平衡因子会大于1
    1.每个结点,颜色要么是红色,要么是黑色
    2.根节点是黑色

    3.叶子节点(NIL){
              color:黑色
              value:NULL
               }
    4.每个红色节点的两个子节点都是黑色的
    5.任意一节点到每个叶子节点的路径都包含数量相同的黑节点

    红黑树的自平衡每次只考虑CPGU三代,要考虑这4个节点
              O
          O    O
     O(当前节点)
    旋转节点绕圆心逆时针方向,基于最短路径累确定方向,旋转节点围绕子节点旋转(子节点为圆心)
    CPG三点一线
    CPG三角关系

    https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

    B树:
    平衡多路查找树
    可以不止两个节点,节点中最多的节点树,就成为几阶的B树
    每个节点也可能有多个关键字:k1 < k2 < k3..
    每个节点不仅包含key值,还包括指向一条记录的指针

    B+树:
    跟B很像,不同点:每个非叶子结点,不包含实际的记录指针,只包含关键字,这样关键字可以更多
    只有叶子节点包含指向实际记录的指针,非叶子节点也出现在叶子节点中,然后所有叶子节点连在一起,组成一个链表
    mysql索引用的B+树

     https://zhuanlan.zhihu.com/p/27700617


    遍历
    深度优先遍历(前序,中序,后序)(递归实现,或者是栈,能用递归的都可以用栈)
    广度优先遍历(层序遍历)(用队列实现)

    二叉堆:要求根节点比左右节点大,是一种特殊的完全二叉树,用数组存储
    最大堆:根节点大于或者等于左右子节点
    最小堆:根节点小于或者等于左右子节点
    二叉堆是实现堆排序和优先队列的基础

    优先队列分为最大优先队列和最小优先队列
    最大优先队列:最大堆实现,最大元素出队
    最小优先队列:最小堆实现,最小元素出队

    O(n2)

    冒泡
    选择
    插入
    希尔

    O(nlongn)
    快速排序(双边循环法,单边循环法)
    归并排序
    堆排序
    把无序数组构建成二叉堆,最大堆,或者最小堆
    循环删除堆顶元素,替换到二叉堆的末尾,调整堆产生新的堆顶


    O(n)
    计数排序
    桶排序
    基数排序

  • 相关阅读:
    .Net Web开发技术栈
    C#foreach原理
    C#位运算符
    python写12306抢票
    java语法学习
    建立个人知识体系
    struts2静态方法和动态方法调用
    springmvc跳转的几种方式
    JDBC驱动程序的四种方式
    eclipse用axis2发布webserver
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/12682952.html
Copyright © 2011-2022 走看看