目录

一、定义

二、性质

三、时间复杂度分析

四、遍历方式

五、源码


一、定义

  1. 若左子树不空,则左子树上的所有的节点都小于它的根节点。
  2. 若右子树不空,则右子树上的所有的节点都大于它的根节点。
  3. 左右子树都是二叉查找树。
  4. 所有的节点均不相等。

二、性质

  1. 对二叉树进行中序遍历,可以得到有序序列,时间复杂度为 O(n) 。
  2. 二叉查找树的高度决定了其查找效率。

三、时间复杂度分析

假设节点的数量为 n 。

  1. 最好的情况,该树是一棵完全二叉树,那么其查找的时间复杂度为 O(logn)  ,即:树的高度。
  2. 最坏的情况,该树退化成链表,其查找的时间复杂度为 O(n) 。

计算过程如下,

假设树的层数为 L,当最后一层的节点只有一个时,节点数量是最少的;当最后一层的节点数量为满格时,节点数量是最多的。则公式如下:

经过整理,其结果为:

故,在最好的情况下,即:树是完全二叉树,其查找的时间复杂度为 O(logn) 。

四、遍历方式

1、中序遍历:根节点 → 左节点 → 右节点。

2、前序遍历:左节点 → 根节点 → 右节点。

3、后序遍历:左节点 → 右节点 → 根节点。

五、源码

https://github.com/xuchanglong/Data-Structures-and-Algorithms/blob/master/datastructures/tree/binarysearchtree.cc

(SAW:Game Over!)

数据结构与算法 / 二叉搜索树(Binary Search Tree)相关推荐

  1. C++二叉搜索树(Binary Search Tree)(附完整源码)

    二叉搜索树Binary Search Tree node结构体定义 Queue结构体定义 二叉搜索树Binary Search Tree算法的完整源码(定义,实现,main函数测试) node结构体定 ...

  2. 实现一个二叉搜索树(Binary Search Tree)

    文章目录 定义 代码实现 一.Github代码地址 二.节点 三.树实现接口 四.4种遍历方式 五.搜索 六.删除 七.插入 结尾 定义 二叉搜索树(Binary Search Tree),又名二叉排 ...

  3. 二叉搜索树(Binary Search Tree)(Java实现)

    文章目录 1.二叉搜索树 1.1. 基本概念 1.2.树的节点(BinaryNode) 1.3.构造器和成员变量 1.3.公共方法(public method) 1.4.比较函数 1.5.contai ...

  4. 数据结构与算法:二叉搜索树

    ✨数据结构与算法:二叉搜索树

  5. 高级数据结构与算法 | 二叉搜索树(Binary Search Tree)

    文章目录 二叉搜索树的概念 二叉搜索树的作用 排序 查找 实现思路 查找 插入 删除 删除.拷贝等 代码实现 K模型 KV模型 二叉搜索树的概念 二叉搜索树又叫做二叉排序树,他是一个具有以下特性的二叉 ...

  6. Python 数据结构与算法——二叉搜索树的实现

    class Tree:本身自然需要维护根节点(root),用于指向树的第一个节点 class Tree:root = None class Node:每一个节点都要维护左子树.右子树 class No ...

  7. 数据结构与算法-二叉搜索树

    二叉搜索树 1.左右子树都是二叉搜索树 2.左子树都比根节点小 3.右子树都比根节点大 (一)编程实现 1.查找 2.插入:递归实现 4.删除 #include <iostream> #i ...

  8. 数据结构与算法(八)二分搜索树(Binary Search Tree)

    本文主要包括以下内容: 二分搜索树的基本概念 二分搜索树的基本操作 1. 插入 2. 删除 3. 查询 实现二分搜索树 二分搜索树的不足 二分搜索树的基本概念 二分搜索树(英语:Binary Sear ...

  9. 平衡搜索树(Binary Search Tree BST)、索引二叉搜索树

    文章目录 二叉搜索树 索引二叉搜索树 测试代码 这里只给出代码实现. 更多的性质日后再补. 二叉搜索树 // // Created by SongyangJi on 2020/12/23. //#if ...

最新文章

  1. dw的css样式怎么删除掉,三种方法教你DreamWeaver下如何应用CSS样式
  2. 2021春季学期-创新设计与实践-Lesson3
  3. java处理IOS无法播放视频流(Accept-Ranges)
  4. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
  5. 2000年考研英语阅读理解文章二
  6. 数据建模-聚类分析-K-Means算法
  7. android studio 本地html,android - 从当前HTML文件Android Studio中打开本地HTML文件? - 堆栈内存溢出...
  8. C# 特性(Attribute)学习
  9. 微信登录功能的实现直接复制就能使用(封装)
  10. 一以贯之是一个思想家成熟的标志
  11. python智慧树判断题_智慧树_大数据分析的python基础_判断题答案
  12. PDF打开不能打印什么原因呢
  13. LM2586S 应用笔记
  14. F22.YOLO深入理解(V1-V3)个人感觉非常详细
  15. uva 11584 dp
  16. 关于vs2022设置默认浏览器
  17. 火影忍者379话最新情报
  18. DeepDive自动化信息抽取---全网首发DeepDive偷工减料超速部署方式
  19. css中多行文本溢出显示省略号的方法
  20. Vue keyframe动画不生效

热门文章

  1. Vertica的这些事lt;十五gt;—— Vertica备份元数据信息
  2. Linux学习笔记6
  3. 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿
  4. Minio分布式集群示例:8个节点,每节点1块盘
  5. idea设置java scala等代码自动换行
  6. Istio 自动注入 sidecar 不成功及k8s安装istio后pod无法创建解决方案
  7. spring boot部署war包打包插件配置
  8. Python Django 正向查询与逆向查询
  9. Java基础--内部类及匿名内部类
  10. elasticsearch手动创建和删除索引