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