学习数据结构基础

环形队列
优先队列

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

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

平衡二叉树:又叫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)
计数排序
桶排序
基数排序

 

posted @ 2020-04-11 23:07  zzyoucan  阅读(175)  评论(0编辑  收藏  举报