一、数据结构和算法-树
一、数据结构和算法-树
节点的度
- 节点有几个分叉
高度
- 自底向上,叶子节点的高度为1
- 树高logN
深度
- 自顶向下,根节点的深度为1
二叉树
- 定义:
- 任意节点的度不超过2
- 查找时间复杂度:logN,递归深度logN;最坏情况下N
- 查找空间复杂度:logN,递归使用的栈空间;最坏情况下是N
- 遍历时间复杂度:N,每个节点都遍历
- 遍历空间复杂度:N,递归使用的栈空间
完全二叉树
二叉查找树
- 左子树小于根节点
- 右子树大于根节点
- 时间复杂度:O(logN),最坏时间复杂度O(N)
- 空间复杂度为 O(logN),,最坏时间复杂度O(N)
AVL树(平衡二叉树)
- 定义:
- 满足二叉查找树的基础上
- 任意节点左右子树高度差(平衡因子)<=1
- 优点:
- 查询效率稳定
- 缺点:
- 维护平衡成本高
- 应用场景:
- 插入少,查询多的场景
- 时间复杂度:递归数的高度,O(logN),不会出现最差情况
- 空间复杂度:为 O(logN),不会出现最差情况
红黑树
- 任意节点的左右子树的高度,相差不超过2 倍。
- 树根是黑色
- 叶子节点是黑色
- 时间复杂度:O(logN)
空间复杂度为 O(logN)
- 保证较高的插入和删除效率
- 优点:
- 不追求完全平衡,减少自旋
- 兼顾删除和插入的效率
- 缺点:
- 查询效率比平衡二叉树略低
- 应用场景:
- 操作系统虚拟内存管理、hashmap键存储
- epoll管理事件
B树
B+树
- 非叶子节点只保存索引,不保存数据
- 叶子节点保存数据,并形成链表结构
- 时间复杂度:O(logN)
Trie树(前缀树或字典树)
This post is licensed under CC BY 4.0 by the author.


