数据结构与算法 / 二叉搜索树(Binary Search Tree)
目录
一、定义
二、性质
三、时间复杂度分析
四、遍历方式
五、源码
一、定义
- 若左子树不空,则左子树上的所有的节点都小于它的根节点。
- 若右子树不空,则右子树上的所有的节点都大于它的根节点。
- 左右子树都是二叉查找树。
- 所有的节点均不相等。
二、性质
- 对二叉树进行中序遍历,可以得到有序序列,时间复杂度为 O(n) 。
- 二叉查找树的高度决定了其查找效率。
三、时间复杂度分析
假设节点的数量为 n 。
- 最好的情况,该树是一棵完全二叉树,那么其查找的时间复杂度为 O(logn) ,即:树的高度。
- 最坏的情况,该树退化成链表,其查找的时间复杂度为 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)相关推荐
- C++二叉搜索树(Binary Search Tree)(附完整源码)
二叉搜索树Binary Search Tree node结构体定义 Queue结构体定义 二叉搜索树Binary Search Tree算法的完整源码(定义,实现,main函数测试) node结构体定 ...
- 实现一个二叉搜索树(Binary Search Tree)
文章目录 定义 代码实现 一.Github代码地址 二.节点 三.树实现接口 四.4种遍历方式 五.搜索 六.删除 七.插入 结尾 定义 二叉搜索树(Binary Search Tree),又名二叉排 ...
- 二叉搜索树(Binary Search Tree)(Java实现)
文章目录 1.二叉搜索树 1.1. 基本概念 1.2.树的节点(BinaryNode) 1.3.构造器和成员变量 1.3.公共方法(public method) 1.4.比较函数 1.5.contai ...
- 数据结构与算法:二叉搜索树
✨数据结构与算法:二叉搜索树
- 高级数据结构与算法 | 二叉搜索树(Binary Search Tree)
文章目录 二叉搜索树的概念 二叉搜索树的作用 排序 查找 实现思路 查找 插入 删除 删除.拷贝等 代码实现 K模型 KV模型 二叉搜索树的概念 二叉搜索树又叫做二叉排序树,他是一个具有以下特性的二叉 ...
- Python 数据结构与算法——二叉搜索树的实现
class Tree:本身自然需要维护根节点(root),用于指向树的第一个节点 class Tree:root = None class Node:每一个节点都要维护左子树.右子树 class No ...
- 数据结构与算法-二叉搜索树
二叉搜索树 1.左右子树都是二叉搜索树 2.左子树都比根节点小 3.右子树都比根节点大 (一)编程实现 1.查找 2.插入:递归实现 4.删除 #include <iostream> #i ...
- 数据结构与算法(八)二分搜索树(Binary Search Tree)
本文主要包括以下内容: 二分搜索树的基本概念 二分搜索树的基本操作 1. 插入 2. 删除 3. 查询 实现二分搜索树 二分搜索树的不足 二分搜索树的基本概念 二分搜索树(英语:Binary Sear ...
- 平衡搜索树(Binary Search Tree BST)、索引二叉搜索树
文章目录 二叉搜索树 索引二叉搜索树 测试代码 这里只给出代码实现. 更多的性质日后再补. 二叉搜索树 // // Created by SongyangJi on 2020/12/23. //#if ...
最新文章
- dw的css样式怎么删除掉,三种方法教你DreamWeaver下如何应用CSS样式
- 2021春季学期-创新设计与实践-Lesson3
- java处理IOS无法播放视频流(Accept-Ranges)
- Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
- 2000年考研英语阅读理解文章二
- 数据建模-聚类分析-K-Means算法
- android studio 本地html,android - 从当前HTML文件Android Studio中打开本地HTML文件? - 堆栈内存溢出...
- C# 特性(Attribute)学习
- 微信登录功能的实现直接复制就能使用(封装)
- 一以贯之是一个思想家成熟的标志
- python智慧树判断题_智慧树_大数据分析的python基础_判断题答案
- PDF打开不能打印什么原因呢
- LM2586S 应用笔记
- F22.YOLO深入理解(V1-V3)个人感觉非常详细
- uva 11584 dp
- 关于vs2022设置默认浏览器
- 火影忍者379话最新情报
- DeepDive自动化信息抽取---全网首发DeepDive偷工减料超速部署方式
- css中多行文本溢出显示省略号的方法
- Vue keyframe动画不生效