二叉搜索树(Binary Search Tree)

来源:互联网 发布:json查看工具 编辑:程序博客网 时间:2024/05/27 09:45

前言

树一直是算法领域的核心之一。二叉搜索树又是树的主要用处之一。一旦学好了二叉搜索树,就可以设计很多高效的程序。

利用二叉搜索树的算法为什么快?

这和二叉搜索树的特点有关系。相比于线性表的长度 n而言,二叉搜索树的平均高度一般只有 lnn。一般而言,对于查找,我们都是从开头查找到结尾。线性表要从头查到尾,长度为 n,而二叉搜索树,只需要从根节点查到一个叶子节点,长度为 lnn。在 n很大时, 长度差距很明显。

利用树生成的符号表(Symbol Table)比较

搜索比较

方法 平均插入时间 平均查找时间 平均删除时间 链表 c(保存链表尾部) n n/2 有序线性表 lnn lnn(二分查找) n 二叉搜索树 1.38lnn(未启用删除方法) 1.38lnn(未启用删除方法) n(启用删除方法后,插入、查找删除时间全变为n) 红黑树 lnn lnn lnn

特殊性

二叉搜索树

  • 若二叉搜索树启用了删除操作,会导致树的极度不平衡,比如,右子树深度为1,而左子树深度为10000。在不平衡下的二叉搜索树效率插入和搜索时间复杂度显著提高,有 1.39lnn 变为 n
  • 1.38lnn 是经过科学测试得出来的结果。

红黑树

  • 基于2-3树。
  • 平衡树,所以插入、搜索和删除时间复杂度都很低。
0 0
原创粉丝点击