我需要对霍夫曼树进行字符串表示。 它使用预先遍历,输出将使用' 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预定义类。
答案 0 :(得分:3)
以下代码:
getTreeString(root.getLeftChild());
getTreeString(root.getRightChild());
应该是
treeString += getTreeString(root.getLeftChild());
treeString += getTreeString(root.getRightChild());
您不会将结果附加到treeString。