我正在尝试使用递归方法遍历霍夫曼树,并且对于每个叶节点,将代码记录添加到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)也给出了错误。
答案 0 :(得分:0)
ArrayList code
是Code
类型,在最后一行,您要向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
应该是什么。所以我只是保持原样。