Trie add和contain 递归写法

Trie add和contain 递归写法

public void addR(String word) {
    addR(root, 0, word);
}

//在以node为根的树中 添加 在word中index位置上的字符
private void addR(Node node,int index, String word) {
    //递归到底情况 当到达最后一个字符的下一个空间 递归终止
    if (index == word.length()) {
        if (!node.isWord) {
            node.isWord = true;
            size++;
        }
        return;
    }
    //如果没有到达最后位置
    char c = word.charAt(index);
    if (node.next.get(c) == null) {
        node.next.put(c, new Node());
    }

    addR(node.next.get(c), index + 1, word);
}

public boolean contain(String word) {
    Node cur = root;
    for (int i = 0; i < word.length(); i++) {
        char c = word.charAt(i);
        if (cur.next.get(c) == null) {
            return false;
        }
        cur = cur.next.get(c);
    }
    return cur.isWord;
}

public boolean containR(String word) {
    return containR(root, 0, word);
}

//在以node为根的树中 查询 在word中index位置上的字符
private boolean containR(Node node, int index, String word) {
    //递归到底情况
    if (index == word.length()) {
        return node.isWord;
    }
    char c = word.charAt(index);
    if (node.next.get(c) == null) {
        return false;
    }
    return containR(node.next.get(c), index + 1, word);
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2022-07-21 04:45:29

赞,是正确的。逻辑非常清晰,相信你对递归的理解已经很深刻了。


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师