Skip to content

Latest commit

 

History

History
50 lines (29 loc) · 1.22 KB

树.md

File metadata and controls

50 lines (29 loc) · 1.22 KB

  • 一个节点可以只有根节点 也可以是一棵树
  • ...

每个节点最多有两个子节点的树称为二叉树

平衡二叉树

  • 树及其子树的左右高度差不能超过1
  • 空树及只有根节点的树也是平衡二叉树

二叉查找树

擅长数据的查找

对于任何节点:

  • 左子树上所有节点都小于它
  • 右子树所有节点都大于它

查找树随着数据的不断增加或插入容易失衡

AVL树

在增加和删除节点时通过旋转来保持平衡

右旋:以某个节点为中心 将它沉入当前右子节点的位置 然后让当前左子节点作为新树的根

屏幕截图 2020-09-22 120018

左旋:

屏幕截图 2020-09-22 120118

红黑树

红黑树不追求左右子树高度差不超过1

而是保证从根节点到叶尾的最长路径不超过最短路径的2倍

其他约束条件:

  • 节点只能是红色或者黑色
  • 根节点必须是黑色
  • NIL(Nothing in leaf)节点都是黑色
  • 相连的两个节点不能都是红色
  • 根节点到叶子节点的所有路径黑色节点数量都相同

红黑树的任何旋转至多3次就能完成