平衡二叉树(AVL树):以树中所有节点为根的树的左右子树高度只差绝对值不超过1.
性质:|左子树-右子树树高|<=1
最小二叉树节点公式:F(n)=F(n-1)+F(n-2)+1
(1 是根节点,F(n-1) 是左子树的节点数量,F(n-2) 是右子树的节点数量)
红黑树:红黑树是一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是红或黑(非红即黑)。
性质:
1. 每个节点非红即黑
2. 根节点是黑的;
3. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的;
4. 如果一个节点是红色的,则它的子节点必须是黑色的。
5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。(新增节点必须为红)
- 红黑树的深度比较大,而 B 树(数据库索引技术里大量使用者B树和B+树的数据结构)和 B+ 树的深度则相对要小一些
- B+ 树则将数据都保存在叶子节点,同时通过链表的形式将他们连接在一起。
B树、B+树:
特点:一般化的二叉查找树;
内部节点可以拥有可变数量的子结点
应用:大部分文件系统、数据库系统都采用B树、B+树作为索引结构
区别:
- B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。
- B+树中所有叶子节点都是通过指针连接在一起,而B树不会。
B树的优点:对于在内部节点的数据,可以直接得到,不必根据叶子结点来定位
B+树的优点:
- 非叶子节点不会带上 ROWID,这样,一个块中可以容纳更多的索引项,一是可以降低树的高度。二是一个内部节点可以定位更多的叶子节点。
- 叶子节点之间通过指针来连接,范围扫描将十分简单,而对于B树来说,则需要在叶子节点和内部节点不停的往返移动。
递归:函数直接或者间接的调用自身
迭代:反复利用变量旧值推出新值
算法:
排序:冒泡、选择、插入、快速、堆排、归并、希尔、计数、桶排序、基数排序
查找:顺序(无序或有序)、二分、差值、斐波那契、哈希(无序或有序)、二叉查找、红黑树
图搜索算法:BFS广度优先搜索 、DFS深度优先搜索BFS和DFS的区别
其他算法: