首页 > 其他分享 >二叉搜索树的概念

二叉搜索树的概念

时间:2023-09-22 22:02:02浏览次数:24  
标签:结点 BSTreeNode 二叉 概念 搜索 key 构造函数

二叉搜索树的概念

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:

  • 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值

  • 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值

  • 它的左右子树也分别为二叉搜索树

image-20230724112755992

二叉搜索树还有一个特征:按照中序走的话是一个升序的状态。所以二叉树搜索树可以叫做二叉排序树或二叉查找树。

二叉搜索树的操作及实现

二叉搜索树的结构

首先实现一个结点类,结点类当中包含三个成员变量:结点值、左指针、右指针,同时结点类当中要对成员变量进行初始化,需要实现一个构造函数,用于将结点的左右指针置空和初始化指定结点值。

结点类的代码实现:

//二叉树搜索树结点类
template<class K>
struct BSTreeNode {
	BSTreeNode<K>* _left;//左指针
	BSTreeNode<K>* _right;//右指针
	K _key;//节点值
	//构造函数
	BSTreeNode(const K& key)
		:_left(nullptr)
		,_right(nullptr)
		,_key(key)
	{}
};
template<class K>
class BSTree {
	//喜欢在类里进行类型重定义,因为受到类域的限制
	typedef BSTreeNode<K> Node;
private:
	Node* _root = nullptr; //可以给一个构造函数,也可以直接写一个缺省值
};

二叉搜索树的构造函数

标签:结点,BSTreeNode,二叉,概念,搜索,key,构造函数
From: https://blog.51cto.com/u_15562309/7572288

相关文章

  • 哈希表概念
    总的来讲哈希表就是通过也就是将key通过一个哈希函数加工处理之后得到一个值,这个值就是数据存放的位置,我们就可以根据这个值快速的找到我们想要的数据。key是学号也就是101011,那么经过哈希函数的计算之后得到了1如何取数据猜测是遍历存放键值对的数组,遍历到数组中的一个元素......
  • 搜索引擎喷一喷
    1.bing搜索 childContextTypes和getChildContext搜出的结果不如google优质,google会直接显示React的文档,第一条就是精准的结果  bing搜索出的都是博客,居然第一页搜到了本人的博客,本人这篇写的还不错2.bing在网络不好的时候,会显示该词条搜索不到结果,不是搜索不到,而是网......
  • 安全HCIE_网络安全概念及规范
    1.网络安全的定义网络安全包括:广义的网络安全,国家层面,与法律挂钩狭义的网络安全,不涉及法律 HCIA-Security认证,具备协助设计、部署和运维中小型企业网络安全架构的能力。安全产品:1.FW(新版防火墙):USG6000防火墙2.IDS(新版入侵威胁检测):NIP60003.AntiDDos1800系列-主要应......
  • 在“百模大战”重生,搜索引擎又行了?
    文丨智能相对论作者丨沈浪“我想让人们知道,是我们(微软)让他们(谷歌)‘跳舞’。”当加入ChatGPT功能的新一代Bing上线,微软CEO纳德拉就已经按耐不住向谷歌发起了挑战。他认为加入新一代人工智能对搜索是一次重新思考的变革,从现在开始,包括核心排名在内的几乎所有东西都可以重新想象。微软......
  • 搜索引擎排名因素有哪些具体的细节?
    搜索引擎排名因素有很多,以下是一些常见的因素:关键词密度和位置:搜索引擎会考虑关键词在网页上的出现频率和位置。关键词密度指的是关键词在网页内容中出现的频率与整个文本的比例。关键词的位置也很重要,例如,如果关键词出现在页面的顶部或标题标签中,则更有可能被搜索引擎重视。页......
  • CadQuery Concepts相关概念
    三维BREP拓扑概念CadQuery基于OpenCascade内核,它对对象使用边界表示(BREP)。这只是意味着对象是由它们的封闭表面定义的。1.vertex:asinglepointinspace顶点:几何中的某个点2.edge:aconnectionbetweentwoormoreverticesalongaparticularpath(calledacurve)......
  • 压缩和归档、文件搜索、文本过滤
    列表对比Linux系统下常用压缩与解压缩命令的区别压缩命令特点解压缩命令zip可压缩目录,不删除原文件unzipgzip删除原文件,可指定压缩比gunzipbzip2删除源文件bunzip2xz压缩比更大unxztar命令的语法与常用选项有哪些?各选项的作用是什么?语法:tar选项打包后的名字打包的文件或目录......
  • JDBC概念
    1.概念2.驱动管理对象(drivermanage)3.获取数据库连接4.数据库连接对象(connection)5.执行sql对象(statemnet)6.代码实现packagecn.itcast.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclassJdbcDemo01{/**JD......
  • win10操作系统动态链接库DLL文件搜索路径
    搜索可执行文件(xx.exe)同级目录下的其它DLL文件(不会搜索子文件夹)32位程序C:\Windows\System32操作系统当前用户或者系统用户Path环境变量中直接包含的文件夹(子文件夹中的DLL同样无法被搜索到,不是递归搜索)在终端执行D:\code>C:\Users\XXX\Desktop\新建文件夹\bb.......
  • 代码随想录算法训练营-贪心算法-5|56. 合并区间、738. 单调递增的数字、968. 监控二叉
    56. 合并区间时间复杂度:O(nlogn)空间复杂度:O(logn),排序需要的空间开销1classSolution:2defmerge(self,intervals):3result=[]4iflen(intervals)==0:5returnresult#区间集合为空直接返回67int......