java - 哈夫曼树字符串表示

标签 java recursion tree huffman-code

我需要制作霍夫曼树的字符串表示形式。 它使用前序遍历,输出将使用“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/

相关文章:

JavaMailSenderImpl 配置一个电子邮件地址并使用另一个电子邮件地址作为 MimeMessageHelper.setFrom 但表示权限问题

Javafx:如何将 ComboBox 项目动态绑定(bind)到从数据库更新自身的可观察列表

Python - 返回整数除数列表的递归方法

Java递归方法将参数的数字相加

sorting - C++ OpenCV按级别对轮廓层次进行排序

java - 在遍历复杂对象时避免嵌套 for 循环

java - 数据类型 varchar(max) 和 text 在等于运算符中不兼容。在SQL Server2005中怎么解决?

javascript - 递归查找嵌套数组中的最后一个字符串?

java - 为树中的叶子分配不同的值

c++ - 线段树数据结构中的数组大小