数组链表特点:
1.向量是一种可扩展的数组,他可以通过可变长度解决数组长度变化的问题,但是,它经常只允许以固定大小的增量扩展。效率比链表低。
2.双端链表 从last端插入,从first端删除,实现先进先出的队列数据结构3.数组随机存取元素N比链表高效
链表的结构:
二叉树:每个结点最多只有两个子树
二叉搜索树:树按中序遍历是递增的序列,左子树小于结点,结点小于右子树的特征
平衡二叉树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
红黑树:解决插入一个有序数组中,数变得不平衡的问题,通过每个结点的颜色和四个红黑规则,通过变换结点颜色和多次旋转,变成一颗二叉平衡树。
AVL树:每个结点都存储了该结点的左子树和右子树的高度差,差值不会大于1,故这也是一颗二叉平衡树。每次执行完操作需要重新修改每个结点的高度差数据,故效率不如红黑树。
2-3-4树:所有的叶节点总是在同一层上。有一个数据项的结点总是有两个子节点,两个数据项的结点总是有三个子节点,三个数据项的结点总是有四个子节点。
B-树:主要用于外部存储的数据结构。B-树是多叉树,2-3-4树和2-3树是B-树的4阶和3阶的特例。
B-树中的每个结点都有多个子节点,这样每一层的结点树增加而树的高度降低,有利于减少外存的访问次数,外存(磁盘、硬盘等)访问时间比访问内存的时间要多得多,所以降低外存的访问次数能有效提高对外存数据的存储时间。
平衡二叉树并非完全二叉树:完全二叉树是除了最后一层可以不满,其它层都是满的,在最后一层只缺右边若干节点,平衡二叉树是它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 可能出现最后一层节点分布在后边,其它层都是满的,此时是一颗平衡二叉树,但并非安全二叉树,因为完全二叉树最后一层的叶子节点分布在左边。
堆:
堆是一种完全二叉树,除了最后一层可以不满,其它层都是满的,在最后一层只缺右边若干节点
通常用一个数组实现
堆中每个节点都满足堆的条件,也就是说每一个节点的关键字都大于或等于这个节点子节点的关键字