【发布时间】:2022-01-06 09:24:34
【问题描述】:
我有这个 trie 代码,我想实现一个删除方法“delete(String s),有人可以帮我吗? 我需要它只将字符串作为参数。
class Trie {
private TrieNode root;
public Trie() {
root = new TrieNode();
}
public void insert(String s) {
TrieNode curNode = root;
char[] arr = s.toCharArray();
for (char curChar : arr) {
if (curNode.children.containsKey(curChar) == false) {
curNode.children.put(curChar, new TrieNode());
}
curNode = curNode.children.get(curChar);
}
curNode.isWord = true;
}
public boolean contains(String s) {
TrieNode curNode = root;
char[] arr = s.toCharArray();
for (char curChar : arr) {
if (curNode.children.containsKey(curChar) == false) {
return false;
}
curNode = curNode.children.get(curChar);
}
return curNode.isWord;
}
public boolean isPrefix(String p) {
TrieNode curNode = root;
char[] arr = p.toCharArray();
for (char curChar : arr) {
if (curNode.children.containsKey(curChar) == false) {
return false;
}
curNode = curNode.children.get(curChar);
}
return true;
}
}
【问题讨论】:
-
您好!您能否编辑您的问题并将 TrieNode 类添加到您的问题中。另外, delete 的预期功能是什么?如果找到字符串的第一个字符(自上而下),您是否希望它删除子 TrieNode 及其所有子节点,还是要从自下而上的方法中删除 TrieNode?span>