23.二叉树搜索树(下)

只要是能比较大小的都能进二叉树

上次代码用key命名,下面用key_value

参与比较的只有key没有value

没找到就返回空,车走了要删除,跟value没关系

字典:

cpp 复制代码
int main()
{
	key_value::BSTree<string, string> dict;
	//BSTree<string, string> copy = dict;
	dict.Insert("left", "左边");
	dict.Insert("right", "右边");
	dict.Insert("insert", "插入");
	dict.Insert("string", "字符串");

	string str;
	while (cin >> str)
	{
		auto ret = dict.Find(str);
		if (ret)
		{
			cout << "->" << ret->_value << endl;
		}
		else
		{
			cout << "无此单词,请重新输入" << endl;
		}
	}

	return 0;
}

ctrlZ 给io流一个错误标志就结束输入了

统计次数:

cpp 复制代码
int main()
{
	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜",
	"苹果", "香蕉", "苹果", "香蕉" };
	key_value::BSTree<string, int> countTree;

	for (const auto& str : arr)
	{
		// 先查找水果在不在搜索树中
		// 1、不在,说明水果第一次出现,则插入<水果, 1>
		// 2、在,则查找到的结点中水果对应的次数++
		//BSTreeNode<string, int>* ret = countTree.Find(str);
		auto ret = countTree.Find(str);
		if (ret == nullptr)
		{
			countTree.Insert(str, 1);
		}
		else
		{
			// 修改value
			ret->_value++;
		}
	}
	countTree.InOrder();


	key_value::BSTree<string, int> copy = countTree;
	copy.InOrder();

	return 0;
}

最下面还有个拷贝构造,没写拷贝构造就是浅拷贝,没崩,写上析构就崩了

这写个二叉树析构就崩了深拷贝:

报错说没有合适默认构造,因为默认构造不能写任何构造

这样强制生成默认构造

相关推荐
weixin_307779132 分钟前
基于Vosk与CTranslate2的实时语音识别翻译系统 —— 完整C++实现详解
人工智能·算法·自动化·语音识别·原型模式
akarinnnn6 分钟前
深入理解内存函数:原理、应用与优化
c语言·网络·数据结构·算法
Hua-Jay6 分钟前
OpenCV联合C++/Qt 学习笔记(二十四)----差值法检测移动物体、稠密光流法跟踪移动物体及稀疏光流法跟踪移动物体
c++·笔记·qt·opencv·学习·计算机视觉
一行代码一行诗++14 分钟前
for循环中的break和continue
数据结构·算法
Tisfy17 分钟前
LeetCode 3043.最长公共前缀的长度:哈希表(不转string)
算法·leetcode·散列表·题解·哈希表
代码中介商18 分钟前
排序算法完全指南(三):插入排序深度详解
算法·排序算法
郭老二22 分钟前
【C++】RPC:远程程序调用
c++·rpc
承渊政道22 分钟前
【贪心算法】(经典实战应用解析(六):整数替换、俄罗斯套娃信封问题、可被三整除的最⼤和、距离相等的条形码、重构字符串)
c++·算法·leetcode·贪心算法·排序算法·动态规划·哈希算法
宠..23 分钟前
VS Code SSH 远程连接 Ubuntu 并实现快速运行(C/C++示例)
java·运维·c语言·开发语言·c++·ubuntu·ssh
WL_Aurora25 分钟前
Python 算法基础篇之排序算法(二):希尔、快速、归并
python·算法·排序算法