我需要制作霍夫曼树的字符串表示形式。 它使用前序遍历,输出将使用“I”(表示内部节点)和“L”(表示叶节点)生成一个字符串,后跟叶节点字符。
public static String getTreeString(final BinaryNodeInterface<Character> root)
{
String treeString="";
if(root == null)
return "";
if(root.isLeaf())
treeString = treeString + "L" + root.getData();
else
{
treeString = treeString + "I";
getTreeString(root.getLeftChild());
getTreeString(root.getRightChild());
}
return treeString;
}
当我调试程序时,它会执行并创建正确的字符串,但由于方法开头的 String treeString="";
,它无法保存。
所需输出:IIILaILbILcLdLe
我的输出:I
此外,我不允许使用任何全局/实例变量或任何 Java 预定义类。
最佳答案
以下代码:
getTreeString(root.getLeftChild());
getTreeString(root.getRightChild());
应该是
treeString += getTreeString(root.getLeftChild());
treeString += getTreeString(root.getRightChild());
您没有将结果附加到treeString。
关于java - 哈夫曼树字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708610/