Trie字典树 静态内存

Posted %%%%%

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Trie字典树 静态内存相关的知识,希望对你有一定的参考价值。

静态字典树 

看了好久的字典树,挺简单的一个结构,愣是看了这么久才写出来。。。

专心一点就不会这样了。。。。

接下来就去刷刷字典树的题吧。。。。。。。

下面是字典树。。。。

定义节点

typedef struct Trie{
char val;  //其实这东西没啥软用。。。注释掉也一样。。。没有变化
bool isword;
struct Trie *next[26];
}*Trie_pointer;

然后建树

这几天抽风了。。。

把memset写在函数外面去了。。。。

编译老半天过不去。。。。

日了。。。。。。。

代码:

 1 #include "stdio.h"
 2 #include "iostream"
 3 #include "malloc.h"
 4 #include "string.h"
 5 
 6 using namespace std;
 7 
 8 #define MAX_SIZE 26
 9 
10 typedef struct Trie{
11     char val;
12     bool isword;
13     struct Trie* child[MAX_SIZE];
14 }Node,*Trie_pointer;
15 
16 Trie_pointer CreateNode()
17 {
18     Trie_pointer node;
19     node = (Trie_pointer)malloc(sizeof(Node));
20     memset(node,0,sizeof(0));
21     return node;
22 }
23 
24 void Insert(Trie_pointer root, char *s)
25 {
26     Trie_pointer tmp,t = root;
27     char *p = s;
28     if(*s == \0)
29         return;
30     while(*p != \0)
31     {
32         if(t->child[*p - a] == NULL)
33         {
34             tmp = CreateNode();
35             tmp->val = *p;
36             t->child[*p - a] = tmp;
37         }
38         t = t->child[*p - a];
39         p++;
40     }
41     t->isword = 1;
42 }
43 
44 bool Search(Node root, char *s)
45 {
46     Trie_pointer t = &root;
47     char *p = s;
48     if(*s == \0)
49         return false;
50     while(*p != \0)
51     {
52         if(t->child[*p - a] == NULL)
53             return false;
54         t = t->child[*p - a];
55         p++;
56     }
57     if(t->isword == 0)
58         return false;
59     return true;
60 }
61 
62 int main()
63 {
64     Node root;
65     char s[20];
66     int i,n;
67     memset(&root,0,sizeof(Node));
68     cin>>n;
69     for(i=1; i<=n; i++)
70     {
71         cin>>s;
72         Insert(&root,s);
73     }
74     while(cin>>s)
75     {
76         int flag = Search(root,s);
77         if(flag)
78             printf("YES\n");
79         else
80             printf("NO\n");
81     }
82     return 0;
83 }

 

以上是关于Trie字典树 静态内存的主要内容,如果未能解决你的问题,请参考以下文章

leetcode打卡--数据结构设计-添加于搜索单词(字典树--Trie)

Trie树(字典树)整理

Trie树详解(转)

trie树(字典树)

前缀树(字典树/Trie) -----Java实现

01字典树