博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解二叉搜索树
阅读量:7036 次
发布时间:2019-06-28

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

  hot3.png

说明

二叉搜索树(Binary Search Tree) BST  , 文中使用 BST 都代表二叉搜索树。

 

BST 结构 

根节点  (root): BST 最顶端的节点 。

父节点 : 任意节点 K 的上层节点 。

叶节点 : 没有子节点的节点 。

左子树 : 任意节点 K 左侧的 BST 。

右子树 : 任意节点 K 右侧的 BST 。 

这种数据结构比线性的结构的数组删除插入方面有更好的性能。比线性结构的链表查找方面有更好的性能。

 

BST 特性

一颗二叉树只有符合 BST 的特性时才是一颗 BST 。无论对BST对任何操作都不能使其违反了BST的特性(要保持住BST的结构),否则该二叉树将不再是一颗BST。

1. 任意节点 K 的左子树的所有节点都小于节点 K (当且仅当K节点左子树不为空时)。

2. 任意节点 K 的右子树的所有节点都大于节点 K (当且仅当K节点右子树不为空时) 。 

3. 任意节点 K 的左子树,右子树都是 BST (也就是一颗 BST 中所有的子树都必须符合BST的特性) 。

4. 不存在键值相等的节点 。

 

BST 动态演示

  • 插入

  • 查找

  • BST 转换为有序数组

BST 的最好,典型,最坏情况

        

BST 的性能取决于树的高度 ,树的高度取决于节点的插入顺序和元素本身的大小。 

转载于:https://my.oschina.net/j4love/blog/1799121

你可能感兴趣的文章
webservice异常
查看>>
开源 java CMS - FreeCMS2.2 敏感词管理
查看>>
域scope 介绍,及查找数据
查看>>
CodeForces 550E Brackets in Implications(构造)
查看>>
uva 10641 (来当雷锋的这回....)
查看>>
go-import下划线的作用
查看>>
Flink – Stream Task执行过程
查看>>
机器学习第1课:引言(Introduction)
查看>>
Echarts柱状图的点击事件
查看>>
shutil模块,ZipFile 和 TarFile 两个模块
查看>>
快速排序,一个爱情故事-java版
查看>>
iOS 输入时键盘处理问题
查看>>
USER Management | Role Categories | Roles | Indirect Responsibilities
查看>>
jquery修改a标签的href链接和文字
查看>>
PHP 使用 GeoLiteCity 库解析 IP 为地理位置
查看>>
win7旗舰版显示不了文件扩展名
查看>>
springMVC--动态验证码实现
查看>>
linux scp 命令
查看>>
Ubuntu Server VS Ubuntu Desktop区别
查看>>
Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider(8)
查看>>