栈:先进后出
队列:先进先出
数组: 查询快: 数组的地址是连续的,通过数组的首地址可以找到数组,通过索引可以快速查找某一个元素
增删慢:数组的长度是固定的,增加/删除操作的时候,必须创建一个新数组,把源数组的数据复制过来
链表: 查询慢:地址不连续,每次查询都必须从头开始
增删快:增加/删除一个元素,对链表的整体结构没有影响
平衡二叉树: 又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1。
完全二叉树:若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点,这就是完全二叉树。
二叉查找树(BST):
1.左子树上所有结点的值均小于或等于它的根结点的值。
2.右子树上所有结点的值均大于或等于它的根结点的值。
3.左、右子树也分别为二叉排序树。
红黑树:通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡
1.每个节点颜色不是黑色,就是红色
2.根节点是黑色的
3.如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点)
4.对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点