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;
}

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

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

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

这样强制生成默认构造

相关推荐
谎言西西里2 小时前
LeetCode 热题100 --- 双指针专区
算法
qq_466302454 小时前
vs2008 Hotlink实时数据读取
c++·qt
阿达King哥5 小时前
关于C++中的typedef typename的含义
c++
leo__5205 小时前
基于两步成像算法的聚束模式SAR MATLAB实现
开发语言·算法·matlab
前端小白在前进5 小时前
力扣刷题:在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
咔咔咔的6 小时前
3652. 按策略买卖股票的最佳时机
c++
某林2127 小时前
基于SLAM Toolbox的移动机器人激光建图算法原理与工程实现
stm32·嵌入式硬件·算法·slam
修炼地7 小时前
代码随想录算法训练营第四十三天 | 图论理论基础、深搜理论基础、卡码网98. 所有可达路径、797. 所有可能的路径、广搜理论基础
算法·深度优先·图论
iAkuya7 小时前
(leetcode)力扣100 23反转链表(迭代||递归)
算法·leetcode·链表
剪一朵云爱着7 小时前
PAT 1095 Cars on Campus
算法·pat考试