树的遍历
- 前序遍历:根左右
- 后序遍历:左右根
- 中序遍历:左根右
搜索二叉树
- 是一棵二叉树
- 任意节点的左孩子的值均小于自身的值,右孩子的值大于自身的值;
-
中序遍历,是升序排列
平衡二叉树
- 是一棵二叉树
-
任意节点的左右两个子树的高度差不超过1(<=1)
平衡树的实现
- AVL Tree
- 每个节点都记录左右子树的高度差
- 严格平衡
- B Tree
- Splay Tree
红黑树
-
近似平衡的二叉查找树 - 每个节点要么是红色,要么是黑色
- 根节点是黑色
- 红节点不能连续
- 对于每个节点,从该节点至
叶子节点的任意路径,都含有相同个数量的黑色节点
红黑树 vs AVL Tree
- AVL Tree 查询相对来说较快;因为 AVL 是严格平衡的,而红黑树是近似平衡的
- 为了严格的平衡性,付出的代价是:1.每个节点存的额外信息会更多;2.调整的频次也更高;
- 红黑树的插入和删除操作相对来说比较快,因为调整的频次相对较低
- 编程语言中的工具方法大多采用红黑树,而数据库层面多使用 AVL
- 数据库中一般查询远大于插入修改