树
节点的祖先节点包括其本身 后代节点也 包括其本身
edge
(A,B)A 为 B 的父节点,则 AB 的边为(A,B)
path
ABC 的 path 为(A,B,C)
degree
degree(A)A 的子节点
高度
某节点高度,某节点到叶节点的最長路径的边数,叶节点高度为 0 树的高度,根节点到叶节点的高度
深度
某节点深度,某节点到根节点的边数
平衡二叉树
每一个节点的左右子树的高度差不能大于 1
满二叉树
除了叶节点外每一个结点都有左右子叶,且叶节点位于二叉树底部
但不一定集中在左侧
完全二叉树
除了最后一层,其他各层都被填满,第 n 层的叶结点都连续集中在最左边
二叉搜索树(BST)
每个节点都满足,左子节点值小于该节点值,右子节点大于等于该节点值 增删改查数据时间复杂度 O(logN)
最小值是树最左端的节点,最大值是树最右端的节点
假设一直递增或递减的增数据会退化为链表,时间复杂度趋于 O(n)
使用平衡二叉查找树可以解决这一问题
平衡二叉查找树(AVL)
既满足平衡二叉树又满足二叉搜索树
红黑树
是一种特殊的二叉查找树,除了满足二叉查找树还满足自平衡的条件
- 节点必须是红色或黑色
- 根节点必须是黑色的
- 所有叶节点必须是值为 null 的黑色节点
- 如果一个节点是红色的,则它的两个子节点都是黑色的
- 从任一节点到达它的每个叶节点的所有路径,都有相同数目的黑色节点 保证红黑树从根节点到达每一个叶节点的最长路径都不会超过最短路径的两倍 所以最坏情况下增删改查的时间复杂度不会超过 O(logN)