2023.1.9 学习总结

news2024/11/16 23:39:10

1.二叉排序树的相关操作

二叉排序树的相关操作可以分为这几种:

1.创建二叉排序树

2.插入值

3.查找值

4.删除值

首先给出二叉排序树的结点类型定义:(就是一个二叉树)

struct bis {
	int data;
	bis* left;
	bis* right;
};

因为创建二叉排序树需要用到插入值的操作,所以我们一起说:

创建二叉排序树

输入:

9
38 45 42 24 58 30 67 12 51

根据输入数据的方法不同,可以更改创建二叉排序树里面的写法,我写的这个就是按照上面的:输入第一行给出一个正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。

每输入一个数,我们就要进行一次插入操作。 

bis* creat() {
	bis* root = NULL;

	int n;
	cin >> n;

	int temp;
	for (int i = 0; i < n; i++) {
		cin >> temp;

		root = insert(root, temp);//每输入一个数,我们就要进行一次插入操作
	}

	return root;
}

插入值

这个函数的第一个参数是二叉排序树的根节点,第二个参数是待插入的数据

now指针用于遍历,pre指针指向now的前驱

我这个二叉排序树是左大右小的,一般是左小右大。

当now指针为NULL时,说明pre指向了叶节点,这时候便可以插入了。

bis* insert(bis* t, int k) {
	bis* pre=NULL, *now;
	now = t;

	while (now) {
		if (k == now->data) {
			return t;
		}
		else {
			pre = now;

			if (k > now->data) {//这个二叉排序树是左大右小的,一般是左小右大
				now = now->left;
			}
			else {
				now = now->right;
			}
		}
	}

	bis* newnode = (bis*)malloc(sizeof(bis));
	newnode->data = k;
	newnode->left = NULL;
	newnode->right = NULL;

	if (!t) {
		t = newnode;
	}
	else {
		if (k > pre->data) {
			pre->left = newnode;
		}
		else {
			pre->right = newnode;
		}
	}

	return t;
}

查找值

查找值的过程和插入值的过程差不多

迭代法:

bis* search(bis* t, int k) {
	bis* temp = t;

	while (temp) {
		if (temp->data = k) {
			return temp;
		}
		else if (k<temp->data) {//这个二叉排序树是左大右小的
			temp = temp->right;
		}
		else {
			temp = temp->left;
		}
	}
	return NULL;
}

递归法:

bis* search2(bis* t, int k) {
	if (t == NULL || t->data == k) {
		return t;
	}
	else {
		if (k < t->data) {//这个二叉排序树是左大右小的
			return search2(t->right, k);
		}
		else {
			return search2(t->left, k);
		}
	}
}

删除值

2.判断是否为完全二叉树

3.字符串find函数

1.find函数

语法

find(str,position)
  • str:待查找的字符串

  • position:字符串中的某个位置,表示从从这个位置开始的字符串中找指定元素(不填第二个参数,默认从字符串的开头进行查找)

返回值为目标字符的位置(第一个字符位置为0),当没有找到目标字符时返回-1

举例

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
    string message = "666acbd";
    string s = "chi1 huo3 guo1";
    string s2 = "ac";

    int flag = message.find(s);
    int flag2 = message.find(s2);

    cout << flag << endl;
    cout << flag2 << endl;

    return 0;
}

2.find_first_of()

查找第一次出现的位置

find_last_of()

查找最后一次出现的位置

举例:

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
    string message = "string666,int m=466,34566";
    string s = "66";

    int first = message.find_first_of(s);
    int last = message.find_last_of(s);

    cout << first << endl;
    cout << last << endl;
    

    return 0;
}

3.rfind() 

 反向查找第一次出现的位置

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
    string message = "string666,int m=466,34566";
    string s = "66";

    int k = message.rfind(s);

    cout << k << endl;

    return 0;
}

查找所有子串在母串中出现的位置 

//查找s 中flag 出现的所有位置。
	string s("hello world!");
    string flag="l";
    int position=0;
    int i=1;
    while((position=s.find(flag,position))!=string::npos)
    {
        cout<<"position  "<<i<<" : "<<position<<endl;
        position++;
        i++;
    }
  position  1 : 2
  position  2 : 3
  position  3 : 9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

熊海cms1.0代码审计

目录 一、环境搭建 二、代码审计 &#xff08;1&#xff09;后台存在登录绕过漏洞 &#xff08;2&#xff09;登录后台user处存在SQL注入 &#xff08;3&#xff09;前&#xff08;后&#xff09;台文件包含漏洞 &#xff08;4&#xff09;后台SQL注入 1、admin/files/…

程序员简历上写这种项目,难怪面试当炮灰。。。

目录&#xff1a; 高级工程师必备&#xff1a;系统设计能力如何让你的项目更有技术含量 上篇文章 《我只是把握好了这3点&#xff0c;1个月后成功拿下大厂offer&#xff01;》我们聊了聊Java工程师在跳槽前的1个月&#xff0c;如何利用较短的时间从技术广度、技术深度、基础功…

实现一个二叉搜索树

目录 1、认识二叉搜索树 2、实现一个二叉搜索树 2.1 成员变量 2.2 insert 方法 2.3 search 方法 2.4 remove 方法(重点) 3、二叉搜索树总结 1、认识二叉搜索树 从字面上来看&#xff0c;它只比二叉树多了搜索两个字&#xff0c;我们回想一下&#xff0c;如果要是在二…

TP4056国产替代DP4056 1A 锂离子电池充电器芯片

DP4056是一款单节锂离子电池恒流/恒压线性充电器,采用底部带散热片的SOP8封装以及简单的外部应用电路&#xff0c;非常适合便携式设备应用,适合USB电源和适配器电源工作,内部采用防倒充电路&#xff0c;不需要外部隔离二极管。热反馈可对充电电流进行自动调节&#xff0c;以便在…

一篇文章了解 StarRocks

前言 本文隶属于专栏《大数据技术体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见大数据技术体系 正文 StarRocks 是新一代极速全场景 MPP 数据库。St…

php宝塔搭建部署实战响应式园林景观设计公司网站系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的响应式园林景观设计公司网站系统源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码…

12月更新2022亮点总结 | Java on Visual Studio Code

大家好&#xff0c;一年的时间过得很快&#xff0c;我们已经来到了2023年。回顾2022年&#xff0c;我们的产品也经历了很多的迭代&#xff0c;在此之中&#xff0c;我们有几个亮点想与大家分享&#xff01; 2022年的亮点 Spring Boot 插件的重大可视化体验升级 从今年年初开始…

基于springboot+mybatis+mysql+vue房屋租赁管理系统

基于springbootmybatismysqlvue房屋租赁管理系统一、系统介绍二、功能展示1.用户登陆2.管理员端主要功能2.房主角色端主要功能3.租客角色端主要功能三、其它系统一、系统介绍 功能说明&#xff1a; 普通用户角色&#xff1a; 寻找房源功能–提供了两种寻找房源的功能&#xff…

JS日期格式化——数字日期转中文日期(封装函数,dayjs时间格式化YYYY-MM-DD)

JS数字日期转中文日期往期相关文章场景复现封装函数&#xff08;数字日期转中文日期&#xff09;实际应用往期相关文章 文章内容文章链接JS数组对象——根据日期进行排序&#xff0c;按照时间进行升序或降序排序https://blog.csdn.net/XSL_HR/article/details/128579840?spm1…

10分钟完全理解golang context

当前go的各种源码中应该都可以看到context的使用&#xff0c;Context是golang 1.7的引入的核心结构&#xff0c;本质是为了处理go的并发控制问题。本文主要带大家深入理解context如何使用&#xff0c;为什么需要context和context设计原理。 并发控制问题 先来看下并发控制到底…

Unity 3D 使用高度图创建地形|| Unity 3D 使用笔刷绘制地形

Unity 3D 使用高度图创建地形 在 Unity 3D 中编辑地形有两种方法&#xff1a; 通过地形编辑器编辑地形。通过导入一幅预先渲染好的灰度图来快速地为地形建模。 地形上每个点的高度被表示为一个矩阵中的一列值。这个矩阵可以用一个被称为高度图&#xff08;heightmap&#xff0…

Win11关闭Windows Defender实时保护,暂时关闭和永久关闭方法 | Win10怎么永久关闭Windows Defender实时保护

文章目录1. 按2. 暂时关闭Windows Defender实时保护3. 永久关闭实时保护3.1. 方法一&#xff1a;改组策略&#xff08;Windows11实测可以&#xff09;3.2. 方法二&#xff1a;改注册表&#xff08;Windows11实测不行&#xff09;1. 按 开启Windows Defender实时保护有时候会导…

HJ2 计算某字符出现次数

HJ2 计算某字符出现次数1 题目2 解法2.1 count_if 本题代码2.1.1 C STL非更易型算法--count_if介绍2.1.2 C中cin(),cin.get(),cin.getline(),getline()总结&#xff1a;2.2 一般做法3 【扩展】C STL--非更易型算法1 题目 题源链接 描述 写出一个程序&#xff0c;接受一个由字…

【HTTP】浏览器缓存(HTTP缓存)

文章目录一、强制缓存1.1、ExPires1.2、Cache-Control二、协商缓存2.1、last-modified2.2、etag浏览器缓存&#xff08;Browser Caching&#xff09;是为了节约网络的资源加速浏览&#xff0c;浏览器在用户磁盘上对最近请求过的文档进行存储&#xff0c;当访问者再次请求这个页…

在国内 PMP 有多少含金量?

PMP 证书已经在全球206个国家和地区得到认可&#xff0c;据 PMI 官方数据统计&#xff0c;截至2021&#xff0c;全球持有效 PMP 证书人数达110 W&#xff0c;国内占比28.98%&#xff0c;超33 W人次。 第一&#xff0c;PMP证书有什么价值&#xff1f; 01.PMP认证的重要性 PMP是…

Unreal UPROPERTY属性标记宏

BlueprintReadOnly,让该变量可在蓝图中访问。新建一个继承AActor的C类CustomActor,添加int变量TestProperty,并给他加上BlueprintReadOnly标记:这样,就能在蓝图中引用该变量。BlueprintReadWrite,让该变量可以在蓝图中使用以及修改。给TestProperty变量添加BlueprintReadWrite标…

【云原生进阶之容器】第二章Controller Manager原理2.7节--Indexer剖析

7 Indexer Indexer是client-go用来存储资源对象并自带索引功能的本地存储,Reflector从DeltaFIFO中将消费出来的资源对象存储至Indexer。Indexer中的数据与Etcd集群中的数据保持完全一致。client-go可以很方便地从本地存储中读取相应的资源对象数据,而无须每次都从远程Etcd集群…

复现yolov5CPP经验贴

源码&#xff1a; https://github.com/Hexmagic/ONNX-yolov5/blob/master/src/test.cpp 该源码亲测可行&#xff0c;但是还是有一些问题 此处改成False 此处改成自己转换好的onnx模型路径 用神经网络工具&#xff1a; https://github.com/lutzroeder/netron 用该工具可查看输入…

【UE4 第一人称射击游戏】24-添加人工智能的敌人跟随功能

上一篇&#xff1a;【UE4 第一人称射击游戏】23-添加子弹伤害本篇效果&#xff1a;步骤&#xff1a;将 导航网格体边界体积 拖入视口按P键显示区域将导航区域扩大一些如果不想让导航体覆盖上面的区域可以将导航体的高度降低一些打开“SimpleAI”&#xff0c;添加一个“Pawn感应…

Java Type

Type 是Java 编程语言中所有类型的公共高级接口&#xff08;官方解释&#xff09;&#xff0c;也就是Java 中所有类型的”爹“。其中”所有类型“的描述尤为指的关注。它并不是我们平常工作中经常使用的int、String、List、Map等数据类型&#xff0c;而是从Java语言角度磊说&am…