You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现Trie字典树时统计节点总数的size方法错误如何修正

问题分析

你写的size方法存在3个核心逻辑错误:

  • 遍历子节点时提前返回:在for循环中只要遇到第一个非空子节点就直接return,不会继续遍历剩下的25个children位置,完全漏掉了其他分支的所有节点统计。
  • isWord逻辑多余且错误:isWord是单词结尾标记,只要节点对象存在就需要计入总数,和该属性取值无关,你写的if(root.isWord) return 1会直接终止递归,导致子节点全部漏算。
  • 没有计入当前节点本身:总节点数需要包含当前传入的节点,你的逻辑中没有对当前节点计数的步骤。
修正代码

正确的递归逻辑为:当前节点计数1 + 所有非空子节点的size之和,实现如下:

public int size() {
    return size(root);
}

private int size(TrieNode node) {
    // 先计入当前节点本身
    int count = 1;
    // 遍历所有子节点,累加非空子节点的总数
    for (int i = 0; i < node.children.length; i++) {
        if (node.children[i] != null) {
            count += size(node.children[i]);
        }
    }
    return count;
}
逻辑验证

简单场景验证:

  • 空Trie只有根节点,调用size返回1,符合预期
  • 插入单词A,节点为根节点 -> A节点,size返回2,符合预期
  • 插入单词A和B,节点为根节点 -> A节点、根节点 -> B节点,size返回3,符合预期

内容的提问来源于stack exchange,提问作者IVIahdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:54:02