Node 节点 / 结点
父节点 左子节点 右子节点
子节点:直接子节点
度:每一个节点的子节点数量
二叉树
二叉树:任意节点的 度<=2
根节点
根节点的左子树 / 根节点的右子树
二叉查找树 == 二叉排序树 == 二叉搜索树 = Binary search tree
遍历
前序遍历: 中 -> 左 -> 右
中序遍历: 左 -> 中 -> 右 (常见)
后序遍历: 左 -> 右 -> 中
层序遍历: 当前层 -> 下一层
平衡二叉树
特殊的 Binary search tree
任意节点左右子树高度不超过1
旋转机制
触发:当添加一个节点之后 不再是平衡二叉树, 旋转机制 调整
确定支点:从添加的节点开始,往上找
左旋:
支点 -> 左子,
右子 -> 支点,
原右子的左子 -> 新左子的右子
右旋:支点降为右子节点
支点 -> 右子,
左子 -> 支点,
原左子的右子 -> 新右子的左子
添加节点在子树 -> 旋转
左左 -> 右
右右 -> 左
左右 -> 左右
右左 -> 右左
红黑树
最开始叫 平衡二叉B树 ,后来改名
红黑规则:
- 每个 Node 仅是 红色 或 黑色
- 根 Node 必是 黑色
- 最末端的空指针处,为 Nil / 黑Node / 叶Node
主要看后两个规则:
- 两红Node 不能相连
- 每一Node 到其下方的 每一叶Node , 每一路径包含的 黑Node 数相同
添加节点:
默认红色(效率高)
添加节点规则:
预设添加的节点为 Red
红黑树的增删改查性能较好,因为其旋转次数较少