嗨,我有一个项目,我需要通过尝试实现字典...但现在我无法实现搜索方法....我的代码在这里
public class TriesNode {
String value;
ArrayList<TriesNode> children = new ArrayList<TriesNode>();
String findNode(TriesNode root , String key ){
for (int i=0 ; i<key.length() ; ++i){
char temp= key.charAt(i);
if ( !(root.children.equals(temp)))
return null;
else
root = root.children.value.equals(temp);
}
}
在这段代码中我在else语句中有错误!!!! 我想用其中一个孩子替换root,它的值类似于key(temp)的第一个字符,但我不能在“else语句”中执行此操作...以及为什么我无法访问该值孩子们?
答案 0 :(得分:0)
好的,root是TriesNode类型,但root.children不是同一类型,这就是问题所在。您无法分配来自不同类型的值。您必须声明root.children类型的变量,然后分配该值。要将root.children的值直接分配给root,您必须执行以下操作:
root.Add(root.children)
或多或少......
答案 1 :(得分:0)
root = root.children.value.equals(temp)并不将root.child分配给root,而是将root分配为true或false,因为检查它是否等于temp。
同样java也不允许你使用if语句从if状态返回不同类型的值。
这将返回链中的最终根,是您要查找的值吗?
尝试
TriesNode findFinalRoot(TriesNode root, String key){
if(key.length() == 0 )
return root;
for(int x = 0 ; x <root.children.lenth(); x++)
if (key.charAt(0) == root.children.get(x).charAt(0)){
findFinalRoot(root,key.subString(1)); // here you loss first character
}