【LeetCode热题100】【图论】实现 Trie (前缀树)

本文介绍了Trie前缀树的数据结构,包括节点设计、插入和查找操作的实现原理,以及如何判断字符串是否为前缀或存在于树中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:208. 实现 Trie (前缀树) - 力扣(LeetCode)

这应该和图论没啥关系,应该属于哈希和树,题目没讲前缀树到达是啥

前缀树是如何做到高效查找字符串的呢,先说单词查找树吧,一共就只有26个字母,先给节点结构

    struct Node {
        Node*next[26];
    };

这样存储字符串abc和abcd只会多一个d指向的节点,也就是相同的前缀会在相同的节点,每一个字母会有26种后缀,因此有26个指针指向后缀节点,如果某节点指针为空,说明没有该字母后缀

如果26个指针都为空,说明该节点是末尾节点,但是我们可以增加一个布尔变量标记是否是结尾,而不需要每次遍历判断26个指针

    struct Node {
        vector<Node*>next;
        bool end;
        Node():next(26,nullptr),end(false){}
    };

插入字符串的时候,从头到尾安排单词的每个字母,如果不存在当前字母,为它创建一个新的节点


    Node *tree;

    void inse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员萌芽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值