数组
特点:
1、内存地址连续,使用之前必须指定数组长度
2、可以通过下坐标的方式访问成员,查询效率高
3、增删
操作会给系统带来性能的消耗(保证数组下坐标越界问题,需要动态扩容)
链表
单向链表和双向链表
双向链表:LinkList等
单项链表:哈希表
双向链表
特点:
1、灵活的空间需求,存储空间不需要连续
2、不支持下坐标的访问,支持顺序遍历检索
3、针对增删效率更高些,只和操作节点的前后节点有关系,无效移动元素
树
红黑树
红黑树 Red-Black Tree [RBT] 是一个自平衡
不是绝对的二叉查找树,树上的节点满足如下的规则:
1、 每个节点要么是红色,要么是黑色
2、根节点必须是黑色
3、每个叶子节点[NULL] 是黑色
4、每个红色节点的两个子节点必须是黑色
5、任意节点到每个叶子节点的路径包含相同数量的黑色节点
黑平衡二叉树
1、recolor 重新标志节点为红色或者黑色
2、rotation 旋转 树到达平衡关键
红黑树能自平衡,它靠的是什么?三种操作:左旋、右旋、变色
左旋:以某个节点作为支点(旋转节点),其右子节点变为旋转节点的父节点,右子节点的左子节点变为旋转节点的右子节点,左子节点保持不变。
右旋:以某个节点作为支点(旋转节点),其左子节点变为旋转节点的父节点,左子节点的右子节点变为旋转节点的左子节点,右子节点保持不变。
变色:节点的颜色由红变黑或由黑变红
红黑树插入场景