HuffmanCode Java实例变量分配了树,保持为空

尼克·鲍里森科(Nick Borisenko)

我正在编写用于创建HuffmanCode程序的遍历方法,由于某种原因,我在遍历方法中构建的映射不会分配给实例变量codeMap我已经在控制台中使用字符串输出测试了方法的过程-traversal构建tree正确,但是当我分配时

`codeMap = traversal(root,s);`

在我的构造函数中,codeMap保持为空;true当我测试时返回

`codeMap.isEmpty()`. 

为什么不codeMap接受返回的地图?root我正在使用变量freqMap和和PriorityQueue在构造函数中也可以正常工作。这是我的构造函数/实例变量:

TreeNode root;
Map<Character,String> codeMap;
Map<Character,Double> freqMap;
HuffmanCode(Map<Character,Double> freqMap){
   this.freqMap = freqMap;
   PriorityQueue<TreeNode> queue = new PriorityQueue<TreeNode>(new NodeComparator());
   for(Map.Entry<Character,Double> entry : freqMap.entrySet()){
     TreeNode temp = new TreeNode(entry.getKey(),entry.getValue());
     queue.add(temp);
   }
   while(queue.size() > 1){
     TreeNode t1 = queue.remove();
     TreeNode t2 = queue.remove();
     TreeNode node = new TreeNode(t1.freq + t2.freq, t1, t2);
     queue.add(node);
   }
   root = queue.remove();
   String s = ""; 
   codeMap = traversal(root,s);
}

和我的traversal方法:

public Map<Character,String> traversal(TreeNode node, String s){
  Map<Character,String> tree = new TreeMap<Character,String>();
  if(!node.isLeaf()){
    traversal(node.left,s+"0");
    traversal(node.right,s+"1");
  }else{
    tree.put(node.letter,s);
  }
  return tree;
}

我在编译或运行时没有任何错误。如果main需要方法,请告诉我,但问题出在此构造函数上。我已经连续工作了几个小时,却找不到codeMap着的原因...

吉姆·加里森

在每个条目处traversal()创建一个新的tree返回到初始调用方法的唯一一个将始终为空,因为在该级别,该节点永远不会是叶节点。

您必须实例化该树一次,并将其作为参数传递给递归方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA 为变量分配了错误的值

来自分类Dev

使用Mockito时,实例变量保持为空

来自分类Dev

当为LinkedList调用delete时,变量被分配了不同的内存

来自分类Dev

尽管为DataRows分配了值,但它们仍然为空

来自分类Dev

即使在DynamicReports中分配了数据集,子报表字段仍然为空

来自分类Dev

如果为变量分配了由函数返回的对象,它是就地复制还是创建的?

来自分类Dev

为什么在此封装示例中为私有变量分配了两次?

来自分类Dev

类型为空,无法分配变量?

来自分类Dev

分配了哈希值的bash变量

来自分类Dev

常数变量可能已经被分配了

来自分类Dev

IList <>属性即使在实例化成员时也保持为空

来自分类Dev

如果在反引号中为命令表达式分配了变量,会发生什么情况

来自分类Dev

在jekyll中传递多个变量,并检测分配了哪些变量

来自分类Dev

对象属性为零,尽管为其分配了值

来自分类Dev

保持变量实例递归

来自分类Dev

Java:为变量分配其当前值?

来自分类Dev

如果对Java CDI / EJB bean引用分配了空值,这是一个好习惯吗?

来自分类Dev

类变量在 for 循环中保持为空

来自分类Dev

在switch语句PHP外部分配的变量为空

来自分类Dev

在函数变量内分配的值始终为空

来自分类Dev

在switch语句PHP外部分配的变量为空

来自分类Dev

为什么实例变量在JavaFX中为空

来自分类Dev

当分配了其他变量时,DateTime对象被更改

来自分类Dev

geom_col分配了错误的自变量

来自分类Dev

lua 变量类型 nil 即使我刚刚分配了它

来自分类Dev

如果为char分配了非char则无限循环

来自分类Dev

是否为对象的功能和属性分配了单独的内存?

来自分类Dev

将指针设置为null是否分配了内存?

来自分类Dev

从在分配了IAM角色的Amazon EC2实例上运行的C#.NET应用程序为联盟用户创建STS令牌

Related 相关文章

  1. 1

    VBA 为变量分配了错误的值

  2. 2

    使用Mockito时,实例变量保持为空

  3. 3

    当为LinkedList调用delete时,变量被分配了不同的内存

  4. 4

    尽管为DataRows分配了值,但它们仍然为空

  5. 5

    即使在DynamicReports中分配了数据集,子报表字段仍然为空

  6. 6

    如果为变量分配了由函数返回的对象,它是就地复制还是创建的?

  7. 7

    为什么在此封装示例中为私有变量分配了两次?

  8. 8

    类型为空,无法分配变量?

  9. 9

    分配了哈希值的bash变量

  10. 10

    常数变量可能已经被分配了

  11. 11

    IList <>属性即使在实例化成员时也保持为空

  12. 12

    如果在反引号中为命令表达式分配了变量,会发生什么情况

  13. 13

    在jekyll中传递多个变量,并检测分配了哪些变量

  14. 14

    对象属性为零,尽管为其分配了值

  15. 15

    保持变量实例递归

  16. 16

    Java:为变量分配其当前值?

  17. 17

    如果对Java CDI / EJB bean引用分配了空值,这是一个好习惯吗?

  18. 18

    类变量在 for 循环中保持为空

  19. 19

    在switch语句PHP外部分配的变量为空

  20. 20

    在函数变量内分配的值始终为空

  21. 21

    在switch语句PHP外部分配的变量为空

  22. 22

    为什么实例变量在JavaFX中为空

  23. 23

    当分配了其他变量时,DateTime对象被更改

  24. 24

    geom_col分配了错误的自变量

  25. 25

    lua 变量类型 nil 即使我刚刚分配了它

  26. 26

    如果为char分配了非char则无限循环

  27. 27

    是否为对象的功能和属性分配了单独的内存?

  28. 28

    将指针设置为null是否分配了内存?

  29. 29

    从在分配了IAM角色的Amazon EC2实例上运行的C#.NET应用程序为联盟用户创建STS令牌

热门标签

归档