大家记得通过这个图,更好理解

一般有两种方法建立,一个是链式,一个就是二维数组。
下面这个模板是链式,

数据结构:

struct Tree
{int num;//判断此节点是否为空的(就是一棵树的结束点)Tree* next[26];//这个是这棵树的子节点Tree(){num = 0;for (int i = 0; i < 26; i++){next[i] = NULL;}}//这是一棵树
}*root;//建立一个树根

插入:

void insert(Tree * p, char* s)
{//int i = 0;int n = strlen(s);/*while (s[i])//当这个字符串的某一个元素不为空的时候{*/for(int i =0;i<n;++i){ int x = s[i] - 'a';//看这个元素在哪里?if (p->next[x] == NULL)//然后看这棵树的子节点有没有这个元素如果没有{p->next[x] = new Tree();//就在这棵树的此节点重新建立一棵子树}p = p->next[x];//p指向他的子树,这一点你就可以知道了所有字符串的元素原来他们都是主仆关系没有相同的等级关系!//i++;//继续遍历}p->num++;
}//插入字符

查找:

int find(Tree * p, char* s)
{int i = 0, ans = 0;//寻找树的元素,ans是结果!while (s[i])//当他不为空的时候就是字符串还有的时候{int n = s[i] - 'a';//找到他在这个树的节点if (p->next[n])//如果节点不为空{p = p->next[n];//p就指向该节点ans = p->num;//结果应该为1i++;}else{return 0;}}return ans;
}

整体代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<set>
//#include<unordered_map>
#include<ctime>
using namespace std;
typedef long long ll;
#define mst(ss,b) memset(ss,b,sizeof(ss));
#define rep(i,k,n) for(int i=k;i<=n;i++)
#define INF 0x3f3f3f3f
const ll maxn = 5e4 + 10;char str[50010][20];
struct Tree
{int num;//判断此节点是否为空的(就是一棵树的结束点)Tree* next[26];//这个是这棵树的子节点Tree(){num = 0;for (int i = 0; i < 26; i++){next[i] = NULL;}}//这是一棵树
}*root;//建立一个树根
int count1;
void insert(Tree * p, char* s)
{//int i = 0;int n = strlen(s);/*while (s[i])//当这个字符串的某一个元素不为空的时候{*/for(int i =0;i<n;++i){ int x = s[i] - 'a';//看这个元素在哪里?if (p->next[x] == NULL)//然后看这棵树的子节点有没有这个元素如果没有{p->next[x] = new Tree();//就在这棵树的此节点重新建立一棵子树}p = p->next[x];//p指向他的子树,这一点你就可以知道了所有字符串的元素原来他们都是主仆关系没有相同的等级关系!//i++;//继续遍历}p->num++;
}//插入字符
int find(Tree * p, char* s)
{int i = 0, ans = 0;//寻找树的元素,ans是结果!while (s[i])//当他不为空的时候就是字符串还有的时候{int n = s[i] - 'a';//找到他在这个树的节点if (p->next[n])//如果节点不为空{p = p->next[n];//p就指向该节点ans = p->num;//结果应该为1i++;}else{return 0;}}return ans;
}int main()
{count1 = 0;//用于记录单词个数的root = new Tree();while (gets_s(str[count1])){insert(root, str[count1++]);}//插入1
}

Tire 模板(建议收藏)相关推荐

  1. 简历模板(建议收藏)

    简历模板 推荐使用Markdown语法写简历 推荐的工具/网站 推荐使用Markdown语法写简历 Markdown语法简洁明了. 还显得高大上一些. 切记不要花里胡哨,HR根本没时间看. 还不会Ma ...

  2. vue3+DataV+Echarts搭建数据大屏模板(建议收藏)

    一.实现效果: Vue3-Vite-Ts数据大屏 二.vue3项目构建: 前言:随着vue2官宣年底停止维护不在提供解决问题的帮助后,vue3+ts+vite大家已经都开始用了,最近也在学习,并结合D ...

  3. 5个PPT素材、模板网站,建议收藏~

    做PPT绝对不能错过这5个网站,建议收藏~ 1.菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?v=NTYxMjky 菜鸟图库素材非常齐全, ...

  4. 领导讲话演讲稿,5个模板,即拿即用!(建议收藏)

    领导万能讲话稿,5个模板,即拿即用!(建议收藏) 讲话材料是领导在一个时期.一项工作中主要思想和意向的反映,具有重要的导向作用.从某种意义上说,一个讲话就是一个信息"窗口",它告诉 ...

  5. 大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...

    来源 | 程序员管小亮 本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法. 由于文 ...

  6. 过程或函数的副作用是_Python函数和函数式编程(两万字长文警告!一文彻底搞定函数,建议收藏!)...

    Python函数和函数式编程 函数是可重用的程序代码段,在Python中有常用的内置函数,例如len().sum()等. 在Pyhon模块和程序中也可以自定义函数.使用函数可以提高编程效率. 1.函数 ...

  7. vba cad 获取宏的路径_VBA批量创建文件目录及链接,建议收藏备用

    小伙伴们,之前有跟大家分享过Power Query获取文件夹内文件清单及其属性的方法[Excel快速获取文件列表及文件属性].今天教大家通过VBA代码来实现同样的功能,提取文件夹内的文件信息更加灵活, ...

  8. 史上最全阿里Java面试题目大汇总!强烈建议收藏~

    阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度.技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面(基础掌握牢 ...

  9. 你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)

    1.CSS盒模型,在不同浏览器的差异 css 标准盒子模型 css盒子模型 又称为框模型(Box Model),包含了元素内容(content).内边距(padding).边框(border).外边距 ...

  10. ❤️六万字《SpringMVC框架介绍—从入门到高级》(建议收藏)❤️

    <SpringMVC框架介绍>(建议收藏) ❤️希望博友给个三连+关注!!! SSM: mybatis + Spring + SpringMVC MVC三层架构 SpringMVC + V ...

最新文章

  1. 这些云计算技术你了解过哪几种
  2. 根据文件路径生成相应文件
  3. 150. Leetcode 860. 柠檬水找零 (贪心算法-基础题目)
  4. 适合小白学的基础知识—SSTI漏洞学习
  5. 将关闭窗口的按钮放在窗口右边
  6. QT编程中遇到的问题总结
  7. Centos之常见目录作用介绍
  8. selenium+python自动化106 - 滑动 iframe 上的滚动条
  9. 对于div背景颜色的透明
  10. 解读制造业数字化转型的六大因素
  11. 单片机c语言程序设计算器,基于单片机的数字计算器的设计
  12. 互联网之于人类社会进化的意义
  13. matlab绘图 作业,实验作业2 - -MATLAB作图
  14. linux meld 中文乱码,linux下paste、diff、meld的使用
  15. mit 6.824 lab1A解析
  16. 线性回归算法梳理——Test1
  17. LRUCache算法
  18. 跨考计算机英语自我介绍,跨专业考研英语自我介绍
  19. Git 常用指令记录
  20. Android watermak

热门文章

  1. mysql+用户批量导出,python批量导出导入MySQL用户的方法
  2. python 内置函数 sum()函数 求和函数
  3. PyQT4编程实例之小财务软件
  4. azkaban获取上游的节点结果_Flink任务实时获取并更新规则
  5. Spring小知识——profile配置
  6. mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin
  7. 服务器管理器运行添加角色向导,Windows Server 2008 服务器角色的添加与管理
  8. java 公共组件_【JAVA语言程序设计基础篇】--Swing GUI组件的公共特性
  9. python保存文件到指定文件夹_python实现指定文件夹下的指定文件移动到指定位置...
  10. hutool的定时任务不支持依赖注入怎么办_「架构」 - 定时任务 amp; Elastic-Job基本使用...