二叉搜索树
Contents
思考?
在 n 个动态的整数中搜索某个整数? (查看其是否存在)
- 假设用动态数组存放元素,从第0个位置开始遍历搜索,平均时间复杂度 O(N)
- 如果维护一个有序的动态数组,使用二分搜索,最坏时间复杂度 O(log N)
- 但是添加,删除的平均时间复杂度是 O(N)
- 针对这个需求, 有没有更好的方案?
- 使用二叉搜索树,添加/删除/搜索的最坏时间复杂度均可优化至 O(log N)
定义:
二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称 BST ,又被称为:二叉查找树,二叉排序树
- 任意节点的值都 大于 其左子树的节点的值
- 任意节点的值都 小于 其右子树节点的值
- 它的左右子树也是一棵二叉搜索树
二叉搜索树可以大大提高搜索数据的效率
二叉搜索树存储的元素必须具备可比较性
-
比如int , double类型
-
如果是自定义类型,需要指定比较方式
-
不允许为 null
Author 飞熊
LastMod May 09