hiho7:#1014 : Trie树

一:构造数据结构
1,对于每一个节点,需要存放该节点字母char,该节点的26个孩子节点Trie *next[26],过该节点的字母数int;,
2,数据结构构造如下:
struct Trie
{
 char ch;
 int cnt;
 Trie *next[26];
 Trie() {
  cnt = 0;  //用来记住过该节点的单词个数,过一个单词加一;
  for (int i = 0; i < 26; i++)
  {
   next[i] = NULL;
  }
 }
};

二:插入一个新单词
1,得到单词长度,确定循环次数
2,初始设置头节点为根节点Trie *head = &root;
3,每次遍历分该节点是否有字母,
如果有字母(没有字母),设置当前字母为新的头节点,然后该节点的cnt加一;
如果没有字母,需要新增树,Trie *node = new Trie;
新增树的节点放置该字母;
新增的节点和之前的树枝连起来

三:查询
看该字母位置是否为NULL,是则说明没有字典里没有该单词;
否则依次向下遍历,头结点设为新的字母,head=head->next[idx];
最终前缀数是head->cnt;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eva_Hua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值