在Java中遍历/打印二进制树图

时间:2013-12-08 23:34:08

标签: java dictionary printing tree binary-tree

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

此mainMap的目的是告诉哪个词对应于哪个文件及其频率。 例如:如果“cat”在“Arnold.txt”中14次,并且在“Jake.txt”中6次,则地图将保持

钥匙......猫 value ... Map [key ... Arnold.txt,value ... 14], [关键.... Jake.txt,价值...... 6]

这没问题。我的问题是穿越并打印出地图。我想

- 对于地图中的每个键
1)访问地图中的当前密钥
2)打印出该键
3)检索值(地图)
         .........对于值图中的每个键
         ...............打印出钥匙
         ............... 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;
}

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

1 个答案:

答案 0 :(得分:0)

我不确定树的结构如何,但根据您描述数据结构的方式(Map<String, Map<String, Integer>>),您可以尝试这样做:

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("");
    }
}