树的遍历

  • 前序遍历:根左右
  • 后序遍历:左右根
  • 中序遍历:左根右

搜索二叉树

  • 是一棵二叉树
  • 任意节点的左孩子的值均小于自身的值,右孩子的值大于自身的值;
  • 中序遍历,是升序排列

平衡二叉树

  • 是一棵二叉树
  • 任意节点的左右两个子树的高度差不超过1(<=1)

平衡树的实现

  • AVL Tree
    • 每个节点都记录左右子树的高度差
    • 严格平衡
  • B Tree
  • Splay Tree

关于树的一些知识梳理

红黑树

  • 近似平衡的二叉查找树
  • 每个节点要么是红色,要么是黑色
  • 根节点是黑色
  • 红节点不能连续
  • 对于每个节点,从该节点至叶子节点的任意路径,都含有相同个数量的黑色节点

关于树的一些知识梳理

红黑树 vs AVL Tree

  • AVL Tree 查询相对来说较快;因为 AVL 是严格平衡的,而红黑树是近似平衡的
    • 为了严格的平衡性,付出的代价是:1.每个节点存的额外信息会更多;2.调整的频次也更高;
  • 红黑树的插入和删除操作相对来说比较快,因为调整的频次相对较低
  • 编程语言中的工具方法大多采用红黑树,而数据库层面多使用 AVL
    • 数据库中一般查询远大于插入修改

B 树

相关文章: