用java实现前缀树

本文介绍了基于TreeNode类的前缀树数据结构,用于高效地插入和搜索字符串。作者提到未来可能改进为使用Map结构以提高适用性。

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

这里是用26个字母为搜索结构的,后期可以改为用Map结构的,这样的话适用性更高

/**
 * 前缀树类
 */
static class TreeNode {
    /**
     * pass=1 我和我下面有1个单词
     */
    public int pass;
    /**
     * end=1 1代表结束了
     */
    public int end;
    public TreeNode[] nexts;

    public TreeNode() {
        pass = 0;
        end = 0;
        nexts = new TreeNode[26];//26个字母
    }
}
/**
 * 插入一个单词
 */
private static void insert(TreeNode root, String product_) {
    char[] product = product_.toCharArray();
    TreeNode node = root;
    for (int i = 0; i < product.length; i++) {
        node.pass++;
        int index = product[i] - 'a';
        if (node.nexts[index] == null) {
            node.nexts[index] = new TreeNode();
        }
        node = node.nexts[index];
    }
    node.pass++;
    node.end++;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蒋劲豪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值