预备知识

  • 对于大量的输入数据,链表的线性访问时间太慢。而树的大部分操作的运行时间平均为O(logN)
  • 平衡二叉查找树是两种类库集合类TreeSetTreeMap实现的基础

树的遍历

  • 先序遍历 : 对节点的处理工作是在它的诸儿子节点被处理之前进行的
  • 后序遍历 : 一个节点处的工作是在它的诸儿子节点被计算后进行的
  • 中序遍历 : 左,节点,右

二叉查找树

  • 二叉树的定义 : 其中每个节点都不能多于两个的儿子
  • 二叉查找树定义 : 对于树中的每个节点X, 它的左子树中所有项的值小于X中的项,而它的右子树所有项的值大于X中的项。
  • 时间复杂度 : 树的所有节点的平均深度为O(logN),因此所有操作的运行时间都是O(logN),但是有可能会出现极端的情况

AVL树

  • 定义 : Adelson-Velskii 和 Landis树是带有平衡条件二叉查找树,每个左子树和右子树的高度最多差1的二叉查找树s
  • 维持平衡操作 : 单旋和双旋
  • 时间复杂度 : O(logN),N为树的深度

红黑树

  • 定义 : red black tree AVL树的变种
    1. 每一个节点或者着成红色、或者着成黑色。
    2. 根是黑色的
    3. 如果一个节点是红色的,那么它的子节点必须是黑色的。
    4. 从一个节点到一个null引用的每一条路径必须包含相同数目的黑色节点
  • 时间复杂度 : 最坏情形下花费O(logN)时间
  • 总结 : 红黑树的高度最多是2log(N+1)

伸展树

  • 基本思想 : (splay tree) 当一个节点被访问后,它就要经过一系列AVL树的旋转被推到根上。(在许多应用中当一个节点被访问时,它很可能不久再被访问)。
  • 时间复杂度 : 它保证从空树开始连续M次对树的操作最多花费O(MlogN)时间

B树

  • 定义 : M叉查找树
  • 特性 :
    1. 数据项存储再树叶上
    2. 非叶节点存储直到M-1个关键字以指示搜索的方向;关键字i代表子树i+1中的最小的关键字
    3. 树的根或者是一片树叶,或者其儿子数在2和M之间
    4. 除根外,所有非树叶节点的儿子数在(M/2向上取整)和M之间
    5. 所有的树叶都在相同的深度上并有L/2向上取整和L之间个数据项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值