一、数据结构
数据结构特点三大方面:存储空间、访问效率、增删效率
1、数组
特点:
1、内存地址连续,使用之前必须要指定好数组的长度
2、可以通过下标访问的方式访问成员,查找效率高
3、数组的增删消耗性能
2、链表
特点:
1、灵活的空间要求、存储空间不需要连续
2、不可以通过下标访问,只能通过遍历进行检索
3、对于增删效率会更高,只和操作的前后节点有关
3、树
二叉树
增删效率和访问效率都鉴于数组和链表之间
特点:
1、该节点的左子树节点比该节点小
2、该节点的右子树节点比该节点大
3、左右子树必须是二叉树
4、顺序队列:从左到右,一层一层
不平衡的二叉树:
特点:
1、查询效率不高
可以通过去除顶端优势去解决,红黑树就是去除二叉查找数顶端优势的解决方案,从而达到树的平衡
红黑树
红黑树 Red-Black Tree 是一个自平衡的二叉查找数
树上每个节点遵循的规则:
1、每个节点要么是红色的,要么是黑色的
2、根节点一定是黑色的
3、每个叶子节点【NIL】都是黑色的
4、任意节点到每个叶子节点的路径的黑色节点数量相同
5、红色节点不能做父子节点
红黑树能自平衡,它靠的是什么?三种操作:左旋、右旋、变色
左旋操作:
右旋操作:
变色:结点的颜色由红变黑或由黑变红。
插入处理的场景
记住主要的三种情况:①红黑树为空②插入节点的父节点为黑色③插入节点父节点为红,其中如果叔叔节点也为红,可直接变色解决,如果为黑,则看情况进行平衡调整。