在Java中遍历霍夫曼树

时间:2014-11-05 15:29:18

标签: java recursion tree huffman-code

我正在尝试使用递归方法遍历霍夫曼树,并且对于每个叶节点,将代码记录添加到ArrayList。这是我到目前为止所做的。

private void traverse(ArrayList<Code> code, BinaryTreeNode<Letter> node,
                     String prefix) {
        // TODO:  Fill in this method
    if (root!=null){
        traverse(code, node.left, prefix);
    }
    if (root!=null){
        traverse(code, node.right, prefix);
    }
    if(node.left==null && node.right==null){
        code.add(node);
    }

code.add(node)也给出了错误。

1 个答案:

答案 0 :(得分:0)

ArrayList codeCode类型,在最后一行,您要向node type object添加code。您需要更改代码以符合以下内容:

还有一件事是包含所有节点的值(假设你想要添加每个节点的值)

private void traverse(ArrayList<Letter> code, BinaryTreeNode<Letter> node,
                     String prefix) {
        // TODO:  Fill in this method
    if(node==null) return; //return if this node is empty.
    if (node!=null){
        traverse(code, node.left, prefix);
    }
    if (node!=null){
        traverse(code, node.right, prefix);
    }
    //if you want to include this node value into ur array then add it like this
    code.add(node.getData());             //assuming your BinaryTreeNode has a method getData()

}

注意:我不知道String prefix应该是什么。所以我只是保持原样。