博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法-二叉排序树
阅读量:5086 次
发布时间:2019-06-13

本文共 548 字,大约阅读时间需要 1 分钟。

前言

查找和排序是算法中最基础的两类算法,其或多或少会被应用在其他高阶算法中。每一种算法都可以有多种数据结构作为支撑,比如查找,可以是对于无序顺序表的查找,查找时只能顺序遍历了;可以是有序顺序表的查找,可以进行二分查找;还可以是即将要介绍的二叉排序树的查找,其查找逻辑类似于二分查找,在插入元素时又不需要大量的移动操作。

定义

二叉排序树又叫做二叉查找树,在数的内部维护着一种秩序,即任何子树的左子树都小于该子树的树根,右子树都大于该子树的树根,这样在查找逻辑就会类似二分查找,这种秩序是在插入元素时得到维持的。

由于二叉排序树的特性,其再求最值、Floor、Ceiling时也是有规律的。

最大最小值

Floor和Ceiling

查找Floor(key)的值就是所有<=key的最大值,相反查找Ceiling的值就是所有>=key的最小值,下图是Floor函数的查找示意图:

删除

 缺陷

二叉排序树在搜索逻辑上类似二分查找,实现也比较简单,但与二分查找一样,极端情况下可能会编程顺序查找(如下图的worst case),也正是因为这种缺陷,排序二叉树很少应用于工程,所以才会出现平衡二叉树。

 

转载于:https://www.cnblogs.com/holoyong/p/7243959.html

你可能感兴趣的文章
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>