Trie树【字典树】

11人阅读 评论(0) 收藏 举报
Trie树【字典树】

Tire树:【摘自百度百科】

                                                                                                                                       

简单的来说,就是通过建立一棵树,进行快速查找字符串。

主要思路:1. 初始化:

                                一科空Tire仅包含一个根节点,该点的字符指针均指向空。【建议定义全局量】

                 2.插入

                 3.查找

题目:读入一个整数N,接下来读入N个字符串插入Tire树。读入一个整数M,进行M次查询,每次查询一个字符串;若在Trie中,输出Yes;反之输出No。

代码如下:

#include<cstdio>
#include<iostream>
#include<cstring>

using namespace std;

int N,M,tot=1;
bool end[10010];
int arr[10010][26];
 
void insert_(char* str)//向Trie树中插入字符 
{
	int len=strlen(str),p=1;//p为指针 
	for(int i=0;i<len;i++)
	{
	 char ch=str[i]-'a';
	 if(arr[p][ch]==0)arr[p][ch]=++tot;
	 p=arr[p][ch];
    }
    end[p]=true;//记录字符串结尾 
}

bool search_(char* str)//查找字符串是否存在 
{
  int len=strlen(str),p=1;
  for(int i=0;i<len;i++)
  {
  	char ch=str[i]-'a';
  	p=arr[p][ch];
  	if(p==0)return false;
  }
  return end[p];//查找是否是结尾 
}

int main()
{
	char str[10010];
	cin >> N;
	for(int i=1;i<=N;i++)
	{
	  scanf("%s",str);
	  insert_(str);
    }
    cin >> M;
	while(M--)
	{
	 scanf("%s",str);
	 if(search_(str))printf("Yes\n");
	 else printf("No\n");
   }
   return 0;
}

                                                                                                                                    左岸夜亦冷

                                                                                                                           【第一次写题解,假的】

查看评论

剑指Offer——Trie树(字典树)

剑指Offer——Trie树(字典树)Trie树    Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常被...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2016-09-07 21:21:30
  • 44093

经典算法——hihocoder#1014 : Trie树(字典树)

#1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,...
  • geekmanong
  • geekmanong
  • 2016-03-24 14:53:10
  • 1497

字典树(Trie树)的C程序实现代码

#include #include #include #define MAX 256//ascii码有256个字符,故每棵树的子节点最多有256个 #define MAXLEN 25...
  • sjjbupt
  • sjjbupt
  • 2011-09-07 22:20:43
  • 5187

TRIE树在输入法分词的应用

TRIE树,即字典树,可以用于排序、保存大量字符串,在搜索引擎和防火墙中都有着重要的作用。本文使用字典树读取汉语拼音并进行匹配,成功实现了汉语拼音的划分。 先来看看TRIE树的结构: ...
  • u011477670
  • u011477670
  • 2015-06-16 21:09:02
  • 1094

Trie树(字典树)_实现模糊查找(支持中文)

搜索功能一般都有根据你的输入快速显示对应关键字的功能,比如你输入”刘”, 搜索框的下拉列表会显示“刘德华”,”刘若英”,”刘欢”等,你继续输入‘德’,将查询关键字变成”刘德”,显示的候选字列表会显示”...
  • qq_31175231
  • qq_31175231
  • 2017-09-03 22:23:48
  • 767

ACM Trie树 字典树模板

ACM Trie树 字典树模板
  • nickwong_
  • nickwong_
  • 2016-04-06 21:54:05
  • 859

字典树-大量字符串前缀及出现次数是否存在统计(Trie树-java)算法实现

前言        字典树又称单词查找树,它是一种树形结构,是一种哈希树的变种,典型应用是用于统计,保存大量的字符串(但不仅限于字符串),统计以是否有以某字符串最为前缀的字符串,有的话有多少,某字符串...
  • chenleixing
  • chenleixing
  • 2015-03-28 22:59:45
  • 8857

字典树(Trie树)用法及例子(一)

字典树(Trie)概述字典树,又名Trie树。顾名思义,在字典中很好用。我们在查牛津词典时都是先按第一个字母找到以这个字母为首的单词所在的初始位置,在此位置的基础上,再按照第二个字母继续找。。。 插...
  • u010902721
  • u010902721
  • 2015-05-15 20:53:31
  • 4956

中文trie树

这几天被汉字trie树小折腾了一下。 开始的时候想直接将单字节作为字典树的节点建树,虽然各个树的节点可能只是多字节字符的一部分,但是基本功能也能够支持。后来发现似乎有些问题,比如在做前向最大匹配分词...
  • amblue
  • amblue
  • 2011-07-01 10:31:00
  • 4229

trie树(字典树)java实现

public class Trie{ private Node root; public Trie(){ root = new Node(' '); } ...
  • u012572955
  • u012572955
  • 2016-05-06 14:21:23
  • 780
    个人资料
    等级:
    访问量: 12
    积分: 10
    排名: 254万+
    文章分类
    文章存档
    阅读排行