Java:使用递归搜索树
我很难找出代码中编码和搜索树部分的错误所在。每次它向右移动时,我希望它返回一个Java:使用递归搜索树,java,file,recursion,encoding,tree,Java,File,Recursion,Encoding,Tree,我很难找出代码中编码和搜索树部分的错误所在。每次它向右移动时,我希望它返回一个,每次它向左移动时,我希望它返回一个,直到它找到字符为止 public String encode(String str) { Node currentNode = root; String result = ""; String s = ""; char aChar; for (int i = 0; i < str.length(); i++) { aC
,每次它向左移动时,我希望它返回一个
,直到它找到字符为止
public String encode(String str) {
Node currentNode = root;
String result = "";
String s = "";
char aChar;
for (int i = 0; i < str.length(); i++) {
aChar = str.charAt(i);
result = searchTree(currentNode, aChar, s);
}
return result;
}
public String searchTree(Node currentNode, char aChar, String s) {
if (currentNode.getLetter() == aChar) {
return s;
} else {
if (currentNode.getLeft() != null) {
return searchTree(currentNode.getLeft(), aChar, s + ".");
}
if (currentNode.getRight() != null) {
return searchTree(currentNode.getRight(), aChar, s + "_");
}
return s;
}
}
输出:
Encode Test 1
str = z
str should encode to: --..
encode(str) = ....
Test: Failed
Encode Test 2
str = sos
str should encode to: ... --- ...
encode(str) = ...
Test: Failed
很抱歉发了这么长的帖子,我已经盯着这件事看了好几个小时了,不知道哪里会有问题。无论出于何种原因,它只返回
,而从不返回任何-
。而且,
的数量似乎有所不同。你知道我哪里出了问题吗?如果您需要查看正在读取的文件或我的代码的任何其他部分,请询问 result=searchTree(当前节点,aChar,s)代码>这将用处理的每个字符覆盖结果。因此,您只能看到最后一个字符的编码。您希望附加到该字符串,而不是指定给它
另外,您正在创建这些节点,但是您没有向我们展示节点的定义(您不认为这可能很重要吗?),并且您没有以与右节点不同的方式初始化左节点,因此右节点可能存在另一个问题
System.out.println("Encode Test 1");
str = "z";
System.out.println("str = " + str);
System.out.println("str should encode to: --..");
System.out.println("encode(str) = " + mc.encode(str));
testResults("--..", mc.encode(str));
// ... --- ... encode
System.out.println("Encode Test 2");
str = "sos";
System.out.println("str = " + str);
System.out.println("str should encode to: ... --- ...");
System.out.println("encode(str) = " + mc.encode(str));
testResults("... --- ...", mc.encode(str));
Encode Test 1
str = z
str should encode to: --..
encode(str) = ....
Test: Failed
Encode Test 2
str = sos
str should encode to: ... --- ...
encode(str) = ...
Test: Failed