【问题标题】:Traversing Through/Printing out a Binary Tree Map in Java在 Java 中遍历/打印出二叉树映射
【发布时间】:2013-12-08 23:34:08
【问题描述】:

所以我有这个二叉树映射(称为“mainMap”),它将字符串作为它的键,每个键都有一个内部映射作为它的值对。映射中的这个映射包含字符串键和整数值。

这个mainMap的目的是告诉哪个词对应哪个文件和它的频率。 例如:如果“猫”在“Arnold.txt”中出现 14 次,在“Jake.txt”中出现 6 次,则地图将保持

键 .... 猫
值 ... 映射 [键 ... Arnold.txt,值 ... 14], [键 .... Jake.txt,值 ... 6]

这没问题。我的问题是遍历并打印出地图。我想要

--对于地图中的每个键
1) 访问地图中的当前键
2) 打印出那个键
3) 检索值(地图)
.........对于值映射中的每个键
.............a) 打印出密钥
.............b) 打印出值
4) 跳过一行,转到下一个键,重复步骤 1-4

我在想我可以使用迭代器。然而,令我尴尬的是,我不知道如何处理我的代码的语法。 (我没有使用 java 内置的 TreeMap 实用程序。我使用的是程序员构建的数据结构。

我在二叉树映射代码中有以下方法

public Iterator< KeyValuePair<K, E> > iterator()
{
    Iterator< KeyValuePair<K, E> > itr = new MyTreeItr();
    return itr;
}

public Iterator< KeyValuePair<K, E> > breadthFirstIterator()
{
   Iterator< KeyValuePair<K, E> > itr = new MyBreadthFirstItr();
   return itr;
}

我希望这是足够的信息。此打印输出用于测试目的,以确保我的地图正确收集数据。

【问题讨论】:

  • 你能给我们你的树的代码吗?我们需要知道它是如何实现的才能回答这个问题。
  • 当然!你是指我创建 mainMap 树的代码还是使用 BinaryTreeMap 类的方法的代码(或两者都有?)
  • 通常二叉树都有一个根节点的引用,每个节点都有一个左右节点的引用。但是,您将结构描述为地图(左/右没有意义),所以我很困惑您如何使用地图来实现二叉树。

标签: java dictionary printing tree binary-tree


【解决方案1】:

我不确定您的树的结构如何,但根据您描述数据结构的方式 (Map&lt;String, Map&lt;String, Integer&gt;&gt;),您可以试试这个:

public void printAll(Map<String, Map<String, Integer>> map){
    for(Map.Entry<String, Map<String,Integer>> entry : map.entrySet()){
        System.out.println(entry.getKey());
        for( Map.Entry<String, Integer> innerEntry : entry.getValue().entrySet()){
             System.out.println(innerEntry.getKey());
             System.out.println(innerEntry.getValue());
        }
        System.out.println("");
    }
}

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2014-05-07
    • 2012-02-01
    • 2012-01-01
    • 2022-11-11
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多