208. 实现 Trie (前缀树)

Trie(前缀树/字典树)及其应用

字典树节点的定义和字符串的构造。

代码如下:

struct Node{
    Node* nxt[26];//这里可以初始化为更多的子节点
    int flag;//标记该到节点是不是一个单词
    
    Node(){ //构造函数,初始化每个子节点为NULL,且该节点不表示一个单词,即flag=0 
        for(int i=0;i<26;i++) nxt[i]=NULL;
        flag=0; 
    } 
};

Node* root;//

void init(){
    root=new Node();//为该空指针分配一块内存 

void insert(char *s)
{
   int size=strlen(s);
   Node* now=root;
   
   for(int i=0;i<size;i++)
   {
       int to=s[i]-'a';
       if(now->nxt[to]==NULL) now->nxt[to]=new Node();
       
    now=now->nxt[to];
   }    
   now->flag=1;//插入一个单词完成,标记结束的那个节点的flag为一 

 

代码来自b站一acm大佬的讲解视频(橙子讲算法)

其实知道了insert操作以后,search和stratwith操作就是非常简单的,异曲同工而已。

https://leetcode-cn.com/problems/implement-trie-prefix-tree/description/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值